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 Edges
iz jednostavne Graph
strukture 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.Comparator
suč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 edges
prema 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 Edges
sada 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