Categorías
Collections

Ordenar LinkedList de objetos definidos por el usuario en Java

Para ordenar una lista en Java, puede utilizar sort(List<T> list) método. Este método puede ordenar una lista en la que todos los elementos deben implementar la interfaz Comparable.

En el siguiente ejemplo, la clase House está definida por el usuario. Para hacerlo comparable, implementa la interfaz Comparable. Usando el sort(List<T> list) método, se puede ordenar en orden ascendente.

Si desea invertir el orden de clasificación, puede usar sort(List<T> list, Comparator<? super T> c) . El parámetro es el método Collections.reverseOrder (). Este método devuelve un Comparador que usa el orden inverso al natural en una colección de objetos que implementan la interfaz Comparable. Dado que la clase House implementa la interfaz Comparable, podemos usar este método para invertir el orden automáticamente.

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
 
//sort self-defined object linkedlist in Java
 
class House implements Comparable<House> {
	String type;
	int size;
 
	public House(String t, int s) {
		type = t; 
		size = s;
	}
 
	@Override
	public int compareTo(House o) {
		int comparedSize = o.size;
		if (this.size > comparedSize) {
			return 1;
		} else if (this.size == comparedSize) {
			return 0;
		} else {
			return -1;
		}
	}
 
	public String toString() {
		return type;
	}
}
 
public class SortLinkedList {
	public static void main(String[] args) {
		LinkedList<House> houseList = new LinkedList<House>();
		houseList.add(new House("medium", 200));
		houseList.add(new House("small", 100));
		houseList.add(new House("large", 300));
		System.out.println(houseList);
 
		// sort in ascending order
		Collections.sort(houseList);
		System.out.println(houseList);
 
		// sort in descending order
		Collections.sort(houseList, Collections.reverseOrder());
		System.out.println(houseList);
	}
 
	public static void printList(List l) {
		for (Object o : l) {
			System.out.println(o);
		}
	}
}
  Ordenar una cadena LinkedList en Java

Producción:

[medium, small, large]
[small, medium, large]
[large, medium, small]

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *