Je voudrais vous suggérer d'utiliser une structure de données différente ici. Vous pouvez créer un propre type de données (POJO) pour les coordonnées x/y, puis vous pouvez trier la liste de manière "normale" Java.
C'est le POJO ce que vous pouvez utiliser:
public class Coordinate {
public int x;
public int y;
public Coordinate(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "[" + x + ", " + y + "] ";
}
}
Et le programme principal qui initialzes la liste, trie les coordinades en fonction de coordonnées X et montre le résultat:
public class SortDemo {
public static void main(String[] args) {
// init the list
List<Coordinate> coordinates = new ArrayList<>();
coordinates.add(new Coordinate(9, 3));
coordinates.add(new Coordinate(8, 6));
coordinates.add(new Coordinate(6, 5));
coordinates.add(new Coordinate(5, 7));
coordinates.add(new Coordinate(4, 9));
coordinates.add(new Coordinate(3, 1));
coordinates.add(new Coordinate(2, 8));
coordinates.add(new Coordinate(-10, 10));
// sort
Collections.sort(coordinates, (coordinate1, coordinate2) -> coordinate1.x - coordinate2.x);
// display the content of the sorted list
System.out.println(coordinates);
}
}
Résultat :
[-10, 10] , [2, 8] , [3, 1] , [4, 9] , [5, 7] , [6, 5] , [8, 6] , [9, 3]
EDIT
toString():
Renvoie une représentation de chaîne de l'objet. En général, la méthode toString renvoie une chaîne qui "représente textuellement" cet objet . Le résultat devrait être une représentation concise mais informative qui est facile pour une personne à lire. Il est recommandé que toutes les sous-classes remplacent cette méthode.
Par exemple:
Coordinate coordinate = new Coordinate(-10, 10);
System.out.println(coordinate);
OU
Coordinate coordinate = new Coordinate(-10, 10);
System.out.println(coordinate.toString());
Vous pouvez le vérifier en mode DEBUG dans votre IDE.
Trier
La forme courte mentionnée de tri collection est équivalent à ceci:
class MySort implements Comparator<Student> {
public int compare(Coordinate coordinate1, Coordinate coordinate2) {
return coordinate1.x - coordinate2.x;
}
}
// how to use
Collections.sort(coordinates, new MySort());
API doc of compare()
rendre la vie simple pour votre auto et créer une classe avec des champs x et y, Construire cependant de nombreux objets nécessaires, puis le stocker dans une liste et le trier. –
N'utilisez pas de réseaux parallèles. Java est un langage orienté objet. Utilise le. Créez une classe avec la paire de valeurs x, y ou utilisez la classe intégrée: ['Point'] (https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html) – Andreas