Comparator sortiert falsch...

equin

Aktives Mitglied
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?
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;
	}
}
 

Neue Themen


Zurück
Oben