Java ordena los elementos (clase personalizada) en la colección ArrayList

Prefacio

Si lo que se almacena en ArraylIst no es un tipo básico como un entero, sino un tipo de referencia como una clase personalizada, ¿cómo deberíamos ordenarlo? (Lo emmm edge_lst = sorted(edge_lst, key=lambda x: x.weight)se resuelve en una frase en python ... Hematemesis 1 Habla hoy con la señorita , pero no jugué bien, hematemesis 2)

La clasificación aquí utiliza el método estático sort de la clase de herramienta Colecciones, lo que significa que se puede utilizar sin instanciar Colecciones.

Método 1: la clase personalizada implementa la interfaz Comparable y anula el método compareTo

Lo que se utiliza aquí es: public static <T> void sort(List<T> list)
por ejemplo:

class Edge implements Comparable<Edge>{
    
    
    public int start;
    public int end;
    public double weight;

    public Edge(int start, int end, double weight) {
    
    
        this.start = start;
        this.end = end;
        this.weight = weight;
    }
    @Override
    public int compareTo(Edge o) {
    
    
        return (int)(this.weight - o.weight);
    }
}
Collections.sort(arr_lst); // 这里的arr_lst是ArrayList<Edge>对象

Método 2: implementar la interfaz Comparator, que se utiliza como segundo parámetro de Collections.sort

Aqui hay public static <T> void sort(List<T> list,Comparator<? super T>
un ejemplo

Collections.sort(arr_lst, new Comparator<Edge>() {
    
    
            @Override
            public int compare(Edge o1, Edge o2) {
    
    
                return (int)(o1.weight-o2.weight);
            }
        });

Ah, existe este método, pero no conozco su principio por el momento. .

arr_lst.sort((Edge o1, Edge o2) -> (int) (o1.weight - o2.weight));

referencia

Cómo ordenar los elementos de la colección ArrayList en Java

Supongo que te gusta

Origin blog.csdn.net/jokerxsy/article/details/113840466
Recomendado
Clasificación