Korištenje Java-ovog Arrays.sort () za bilo koji Popis objekata

Sortiranje može biti nezgodno, pogotovo kada popis nije primitivnog Java numeričkog tipa (bajt, cjelobrojno, kratko, dugo, dvostruko, s pomikom). Sada će se sve situacije razlikovati pa ova metoda možda neće biti najbolji slučaj. Međutim, smatrao sam ga nevjerojatno korisnim za jednostavne izazove kodiranja i zadatke sveučilišnog laboratorija.

Za početak odaberite svoj popis. Za ovaj primjer koristit ću popis Edgesiz jednostavne Graphstrukture podataka:

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

Zatim definirajte implementaciju java.util.Comparatorsučelja:

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

U ovom ćemo primjeru sortirati edgesprema njihovoj cijeni ili udaljenosti od src(izvornog) vrha do dst(odredišnog) vrha.

Napokon upotrijebite standardnu java.util.Arrays.sort()metodu:

Arrays.sort(edges, new SortByCost())

I upravo tako, popis Edgessada sortiran je uzlazno (najmanje do najvećeg) reda.

Ako imate pitanja, slobodno se obratite na Twitteru

Također me možete pronaći na GitHubu ili mojoj osobnoj web stranici

~ Sretno kodiranje

- Ethan Arrowood