Χρησιμοποιώντας το Java's Arrays.sort () για οποιαδήποτε λίστα αντικειμένων

Η ταξινόμηση μπορεί να είναι δύσκολη, ειδικά όταν η λίστα σας δεν είναι πρωτόγονος αριθμητικός τύπος Java (Byte, Integer, Short, Long, Double, Float). Τώρα, όλες οι καταστάσεις θα διαφέρουν, επομένως αυτή η μέθοδος μπορεί να μην είναι η καλύτερη περίπτωση. Ωστόσο, το βρήκα εξαιρετικά χρήσιμο για απλές προκλήσεις κωδικοποίησης και αναθέσεις εργαστηριακών πανεπιστημίων.

Για να ξεκινήσετε, επιλέξτε τη λίστα σας. Για αυτό το παράδειγμα θα χρησιμοποιήσω μια λίστα Edgesαπό μια απλή Graphδομή δεδομένων:

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

Στη συνέχεια, ορίστε την εφαρμογή της java.util.Comparatorδιεπαφής:

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

Σε αυτό το παράδειγμα, θα ταξινομήσουμε το edgesκατά το κόστος τους ή την απόσταση από την srcκορυφή (πηγή) έως την κορυφή dst(προορισμού).

Τέλος χρησιμοποιήστε την τυπική java.util.Arrays.sort()μέθοδο:

Arrays.sort(edges, new SortByCost())

Και ακριβώς έτσι, η λίστα Edgesείναι τώρα ταξινομημένη με αύξουσα (τουλάχιστον προς τη μεγαλύτερη) σειρά.

Εάν έχετε οποιεσδήποτε ερωτήσεις μη διστάσετε να επικοινωνήσετε με το Twitter

Μπορείτε επίσης να με βρείτε στο GitHub ή στον προσωπικό μου ιστότοπο

~ Ευτυχής κωδικοποίηση

- Ethan Arrowood