Ordinamento di un elenco di punti con Java

Ho una lista di oggetti punto, che voglio ordinare per una certa coordinata, per esempio i valori x. Java fornisce qualche meccanismo utile o dovrei avvalermi di uno degli algoritmi di ordinamento comuni?

Sì, crea un Comparator personalizzato e usalo per ordinare l’elenco dei punti

 class Point{ private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public Point(int x, int y) { this.x = x; this.y = y; } public Point() { } } 

 List points = new ArrayList(); points.add(new Point(1, 2)); points.add(new Point(60, 50)); points.add(new Point(50, 3)); Collections.sort(points,new Comparator() { public int compare(Point o1, Point o2) { return Integer.compare(o1.getX(), o2.getX()); } }); 

Nella class Point è necessario implementare l’interfaccia Comparable con il tipo generico e utilizzare Collections.sort (pacchetto java.util) per l’ordinamento List

Assumere:

 class Point implements Comparable{ int compareTo(Point other){ /* your logic */} } List list = new ArrayList(); /* adding points */ Collections.sort(list); 

Dovresti creare la tua class di punti per implementare l’interfaccia Comparable o fornire il metodo sort () con il tuo object Comparator, che dice a sort () come ordinare i tuoi oggetti. Ci sono molti esempi qui intorno.

Puoi usare qualcosa come un Bean Comparator in modo da non dover continuare a creare Comparatori personalizzati.