Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Guten Tag!
Ich habe eine ArrayList mit Entrys, deren Value Integers sind und genau nach diesen Integers will ich die Liste sortieren, allerdings verstehe ich nicht, wie ich vorgehen muss.
Mit Collections.sort gehts ja scheinbar nur, wenn ich dir compare Methode überschreibe. Mein Problem ist also, dass ich nicht verstehe, womit ich die compare Methode überschreiben muss, damit das ganze funktioniert.
Irgendwelche Tipps?
Leider funktionierts aber nicht so, wie ichs ausprobiert habe. Also, ich habs so gemacht:
Code:
public static ArrayList<Map.Entry<String, Integer>> sorti() {
ArrayList<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>();
list = dieListe();
Collections.sort(list);
return list;
}
und bekomme den Fehler
Begrenzungsabweichung: Die generische Methode sort(List<T>) des Typs Collections ist für die
Argumente (ArrayList<Map.Entry<String,Integer>>) nicht zutreffend. Der abgeleitete Typ
Map.Entry<String,Integer> ist kein gültiger Ersatz für den begrenzten Parameter <T erweitert
Comparable<? super T>>
Dein Post war vor meiner Antwort noch nicht da
So wie du es geschrieben hast, wollte ichs ja machen, allerdings komme ich nicht weiter, als
Code:
public class Sortiborti implements Comparator<Map.Entry<String, Integer>> {
public int compare(Map.Entry<String, Integer> o1,
Map.Entry<String, Integer> o2) {
weil ich die compare Methode absolut nicht verstehe. Ich probiere jetzt seit ca. 1 1/2 Stunden zu verstehen, was ich da rein schreiben muss, weder die API noch diverse Bücher habe ich dazu wirklich verstanden
Ich bin jetzt (möglicherweise) ein wenig weiter. Mein Code sieht momentan folgendermaßen aus:
Code:
public class Sortiborti implements Comparator<Map.Entry<String, Integer>> {
public int compare(Map.Entry<String, Integer> o1,
Map.Entry<String, Integer> o2) {
Integer i = o1.getValue();
Integer j = o2.getValue();
return i.compareTo(j);
}
Code:
public static ArrayList<Map.Entry<String, Integer>> sorti() {
ArrayList<Map.Entry<String, Integer>> list = dieListe();
Comparator<Map.Entry<String, Integer>> c;
Collections.sort(list, c);
return list;
}
Allerdings weiß ich nicht, was ich mit c machen muß. c ist nicht initialisiert, wie initialisiere ich c? Ist das überhaupt richtig, was ich da geschrieben habe?
was heißt hier 'bisschen weiter', voher war der Comparator leer, nun hast du doch rein geschrieben dass er die beiden Values vergleichen soll,
ein guter Schritt
es fehlt mindestens noch
Comparator<Map.Entry<String, Integer>> c = new Sortiborti();
du kannst aber auch kürzer
SortiBorti comp = new Sortiborti();
Collections.sort(list, comp);