Hallo zusammen,
ich stehe im Moment vor einer Frage die ich mir bisher nicht so recht klar machen konnte.
Bei TreeSets ist für eine Sortierung eine compare-Methode zu implementieren, wenn man bspw eine umgekehrte Reihenfolge möchte (Oder man benutzt die Abkürzung).
Ich habe zwei Beispielprogramme bei denen ich mcih frage wieso ich bei dem einen ein neues Objekt?! dem TreeSet überge bei der Implementierung bei dem anderen jedoch nicht, die Frage lautet also wann muss/kann man das machen, wann nicht.
Erstes Programm Zeile 4 (hier wird ein neues Objekt (Neu SucheReverse()) beim Erzeugen übergeben):
Zeites Programm Zeile 27 (hier wird nichts übergeben):
Ich hoffe es ist verständlich was ich meine.
Vielen Dank schonmal für eure Antworten.
ich stehe im Moment vor einer Frage die ich mir bisher nicht so recht klar machen konnte.
Bei TreeSets ist für eine Sortierung eine compare-Methode zu implementieren, wenn man bspw eine umgekehrte Reihenfolge möchte (Oder man benutzt die Abkürzung).
Ich habe zwei Beispielprogramme bei denen ich mcih frage wieso ich bei dem einen ein neues Objekt?! dem TreeSet überge bei der Implementierung bei dem anderen jedoch nicht, die Frage lautet also wann muss/kann man das machen, wann nicht.
Erstes Programm Zeile 4 (hier wird ein neues Objekt (Neu SucheReverse()) beim Erzeugen übergeben):
Java:
import java.util.*;
class FruitTree {
public static void main(String[] args){
TreeSet obst=new TreeSet(new SucheReverse());
obst.add("Kiwi");
obst.add("Kirsche");
obst.add("Ananas");
obst.add("Zitrone");
obst.add("Grapefruit");
obst.add("Banane");
obst.add("Kirsche");
obst.add("Kiwi");
Iterator it=obst.iterator();
while(it.hasNext())
System.out.println((String)it.next());
}
}
class SucheReverse implements Comparator {
public int compare(Object o1, Object o2)
{
return ((String)o2).compareTo((String)o1);
}
}
Zeites Programm Zeile 27 (hier wird nichts übergeben):
Java:
import java.util.*;
class Student implements Comparable
{
//Attribute für Name und Matrikelnummer
public String name;
public int matrikel;
Student (String n, int m)
{
name = n;
matrikel = m;
}
public int compareTo(Object o)
{
if (matrikel > ((Student)o).matrikel)
return 1;
else if (matrikel == ((Student)o).matrikel)
return 0;
else
return -1;
}
}
class StudentTree
{
public static void main(String[] args){
//Neues TreeSet Objekt studi erzeugen
TreeSet<Student> studi = new TreeSet<Student>();
studi.add(new Student ("Paul Schmidt",562312));
studi.add(new Student ("Anna Müller",761232));
studi.add(new Student ("Heidi Unger",752312));
studi.add(new Student ("Peter Paffay",642312));
//TreeSet Objekt studi durchlaufen und für jeden Studenten
//Name und Matrikelnummer ausgeben
Iterator<Student> it = studi.iterator();
while (it.hasNext())
{
Student tmp = it.next();
System.out.println(tmp.name + " " + tmp.matrikel);
}
}
}
Ich hoffe es ist verständlich was ich meine.
Vielen Dank schonmal für eure Antworten.