Brug af Java's Arrays.sort () til enhver liste over objekter

Sortering kan være vanskelig, især når din liste ikke er af en primitiv Java-numerisk type (Byte, Heltal, Kort, Lang, Dobbelt, Flydende). Nu vil alle situationer variere, så denne metode er muligvis ikke det bedste tilfælde. Jeg har dog fundet det utroligt nyttigt til enkle kodningsudfordringer og universitetslaboratorieopgaver.

Vælg din liste for at starte. I dette eksempel bruger jeg en liste over Edgesfra en simpel Graphdatastruktur:

// 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();

Dernæst definerer implementeringen af java.util.Comparatorgrænsefladen:

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; }}

I dette eksempel sorterer vi edgesefter deres pris eller afstand fra src(kilde) toppunkt til dst(destinations) toppunkt.

Brug endelig standardmetoden java.util.Arrays.sort():

Arrays.sort(edges, new SortByCost())

Og netop sådan er listen over Edgesnu sorteret i stigende (mindst til største) rækkefølge.

Hvis du har spørgsmål, er du velkommen til at kontakte Twitter

Du kan også finde mig på GitHub eller min personlige hjemmeside

~ Happy Coding

- Ethan Arrowood