Sers Leute,
ich hab eine ArrayList<Waypoint>, die ich gern per Collections.binarySearch durchsuchen würde.
Die ArrayList ist auch sortiert, per Methode in der Klasse Waypoint -
Sortiert habe ich so:
Das passt soweit, hab ich ausprobiert.
Jetzt will ich aber nach anderen Kriterien suchen als die, nach denen ich sortiere. Schreib ich also einen Comparator,
und wende ihn so an:
Das funktioniert nicht so ganz, ausgegeben wird "Ergebnis: -10", sprich er findet nix.
Hat wer einen Tipp für mich, was ich da falsch gemacht habe?
Vielen Dank im Voraus
Zoidberg
ich hab eine ArrayList<Waypoint>, die ich gern per Collections.binarySearch durchsuchen würde.
Die ArrayList ist auch sortiert, per Methode in der Klasse Waypoint -
Code:
public class Waypoint implements Comparable
Code:
public int compareTo(Object other)
{
int wkTotalOther = ((Waypoint) other).getwegkostenTotal();
if(this.getwegkostenTotal() > wkTotalOther)
return 1;
else
return -1;
}
Sortiert habe ich so:
Code:
Collections.sort(toDo);
Das passt soweit, hab ich ausprobiert.
Jetzt will ich aber nach anderen Kriterien suchen als die, nach denen ich sortiere. Schreib ich also einen Comparator,
Code:
public class ComparatorWaypoint implements Comparator<Waypoint>
{
public int compare(Waypoint o1, Waypoint o2)
{
int x1 = o1.getX_coordinate();
int x2 = o2.getX_coordinate();
int y1 = o1.getY_coordinate();
int y2 = o2.getY_coordinate();
int ret = ((Integer)x1).compareTo(((Integer)x2));
int comp = ((Integer)y1).compareTo(((Integer)y2));
if(ret == comp)
return ret;
else
return -1;
}
}
und wende ihn so an:
Code:
int i = Collections.binarySearch(toDo, new Waypoint(w), new ComparatorWaypoint());
System.out.println("Ergebnis: " + i);
if(i > - 1)
toDo.remove(i);
Das funktioniert nicht so ganz, ausgegeben wird "Ergebnis: -10", sprich er findet nix.
Hat wer einen Tipp für mich, was ich da falsch gemacht habe?
Vielen Dank im Voraus
Zoidberg