Java's Arrays.sort () -sovelluksen käyttäminen mille tahansa objektiluettelolle

Lajittelu voi olla hankalaa, varsinkin kun luettelosi ei ole primitiivistä Java-numerotyyppiä (tavu, kokonaisluku, lyhyt, pitkä, kaksinkertainen, kelluva). Nyt kaikki tilanteet vaihtelevat, joten tämä menetelmä ei ehkä ole paras tapa. Olen kuitenkin löytänyt sen uskomattoman hyödyllisenä yksinkertaisissa koodaushaasteissa ja yliopiston laboratoriotehtävissä.

Aloita valitsemalla luettelosi. Tässä esimerkissä käytän luetteloa Edgesyksinkertaisesta Graphtietorakenteesta:

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

Määritä seuraavaksi java.util.Comparatorkäyttöliittymän toteutus :

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

Tässä esimerkissä lajitellaan edgesniiden hinta tai etäisyys src(lähde) kärjestä dst(kohde) kärkeen.

Käytä lopuksi standardimenetelmää java.util.Arrays.sort():

Arrays.sort(edges, new SortByCost())

Ja aivan kuten, luettelo Edgeson nyt lajiteltu nousevassa järjestyksessä.

Jos sinulla on kysyttävää, ota rohkeasti yhteyttä Twitteriin

Löydät minut myös GitHubista tai omalta verkkosivustoltani

~ Hyvää koodausta

- Ethan Arrowood