Hallo, ich will eine Liste von "Points" sortieren lassen, so dass erst die X-Koordinate betrachtet wird und wenn diese gleich ist, die Y-Koordinate. (1,1) soll also vor (2,1) komen und (1,1) vor (1,2) bei einem Format von (x,y). Der folgende Algorithmus sortiert die Punkte aber nach dieser Reichenfolge:
java.awt.Point[x=3,y=3]
java.awt.Point[x=1,y=4]
Was mache ich falsch?
mit dem Comparator:
java.awt.Point[x=3,y=3]
java.awt.Point[x=1,y=4]
Was mache ich falsch?
Java:
List<Point> list3 = new ArrayList<Point>();
list3.add(new Point(3,3));
list3.add(new Point(1,4));
PointComparator comparator = new PointComparator();
Collections.sort(list3, comparator);
for (int i = 0; i < list3.size(); i++) {
System.out.println(list3.get(i));
}
mit dem Comparator:
Java:
import java.awt.Point;
import java.util.Comparator;
public class PointComparator implements Comparator<Point>{
public int compare(Point p1, Point p2){
if(p1.getX()<p2.getX()){
return -1;
}else if(p1.getX()>p2.getY()){
return 1;
}else if(p1.getY()<p2.getY()){
return -1;
}else if(p1.getY()>p2.getY()){
return 1;
}
return 0;
}
}