Usando Arrays.sort () de Java para cualquier lista de objetos

La clasificación puede ser complicada, especialmente cuando su lista no es de un tipo numérico Java primitivo (Byte, Integer, Short, Long, Double, Float). Ahora bien, todas las situaciones variarán, por lo que este método podría no ser el mejor de los casos. Sin embargo, lo he encontrado increíblemente útil para desafíos simples de codificación y tareas de laboratorio universitario.

Para empezar, elija su lista. Para este ejemplo, usaré una lista de Edgesuna Graphestructura de datos simple :

// Very simple Edge classpublic class Edge { public Vertex src; public Vertex dst; public double cost; // creates an edge between two vertices Edge(Vertex s, Vertex d, double c) { src = s; dst = d; cost = c; }}
// List of edgesEdge[] edges = graph.getEdges();

A continuación, defina la implementación de la java.util.Comparatorinterfaz:

class SortByCost implements Comparator { public int compare(Edge a, Edge b) { if ( a.cost < b.cost ) return -1; else if ( a.cost == b.cost ) return 0; else return 1; }}

En este ejemplo, ordenaremos edgespor su costo, o la distancia desde el srcvértice (fuente) al vértice dst(destino).

Finalmente use el java.util.Arrays.sort()método estándar :

Arrays.sort(edges, new SortByCost())

Y así, la lista de Edgesahora se ordena en orden ascendente (de menor a mayor).

Si tiene alguna pregunta, no dude en comunicarse con Twitter

También puedes encontrarme en GitHub o en mi sitio web personal.

~ Codificación feliz

- Ethan Arrowood