TreeSet sortieren

Status
Nicht offen für weitere Antworten.
M

Muminek

Gast
Hallo zusammen,

ich habe ein TreeSet aus folgenden Objekten:

Code:
public class RecipientMailInfo implements Comparable {

	private String fullName;

	private String email;

	private String  firstName;

	private String  lastName;

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getFullName() {
		return fullName;
	}

	public void setFullName(String fullName) {
		this.fullName = fullName;
	}

	public int compareTo(Object recipientmailInfo) {
		RecipientMailInfo recipientMailInfo = (RecipientMailInfo) recipientmailInfo;

		final int EQUAL = 0;

		if (this == recipientMailInfo) {
		return EQUAL;
		}
		int comparison = 0;

		comparison = this.firstName.compareTo(recipientMailInfo.firstName);
		if (comparison != EQUAL) {
		return comparison;
		}

		comparison = this.lastName.compareTo(recipientMailInfo.lastName);
		if (comparison != EQUAL) {
		return comparison;
		}

		comparison = this.email.compareTo(recipientMailInfo.email);
		if (comparison != EQUAL) {
		return comparison;
		}

		comparison = this.fullName.compareTo(recipientMailInfo.fullName);
		if (comparison != EQUAL) {
		return comparison;
		}

		return EQUAL;

		}

}

Ich musste dazu die compareTO Methode überschreiben. Nun möchte ich das TreeSet nach dem Attribut
Fullname sortieren. Nur die frage ist wie? Für jeden Tipp wäre ich dankbar.


MFG
 
G

Gast

Gast
Schau dir am besten mal die API an Treeset

du solltest die compareTo methode anständig überschreiben
 
M

Muminek

Gast
Ja, schon aber das erschließt sich für mich daraus nicht wirklich.
 
S

SlaterB

Gast
was möchtest du denn tun, compareTo ändern
oder eine zweite Sortierreihenfolge definieren?

dann musst du ein zweites TreeSet mit einem Comparator-Objekt erstellen,
das Comparator-Objekt legt die Reihenfolge fest,
nur wenn keins da ist, wird auf das normale compareTo zurückgegriffen
 
M

Muminek

Gast
Wenn es möglich ist compareTo so zu ändern das das TreeSet nach fullname sortiert wird, wäre dies die Lösung die mir am liebsten ist.
 

Marco13

Top Contributor
Code:
public int compareTo(Object recipientmailInfo) {
      RecipientMailInfo recipientMailInfo = (RecipientMailInfo) recipientmailInfo;
      return this.fullName.compareTo(recipientMailInfo.fullName);
}
???:L
 
M

Muminek

Gast
Danke für die Idee. Diese Möglichkeit funktioniert jedoch leider nicht.
Die Objekte werden nicht nach fullname sortiert sondern weiter einfach
nach der Reihenfolge in der sie hinzugefügt wurden.
 
S

SlaterB

Gast
Code:
import java.util.Iterator;
import java.util.TreeSet;

public class Test
{

    private class Person
        implements Comparable
    {

        String name;

        public Person(String name)
        {
            this.name = name;
        }

        public int compareTo(Object o)
        {
            return this.name.compareTo(((Person)o).name);
        }

        public String toString()
        {
            return this.name;
        }


    }


    public Test()
    {
        Person p1 = new Person("aaaaa");
        Person p2 = new Person("xxxxx");
        Person p3 = new Person("ccccc");
        Person p4 = new Person("zzzzz");

        TreeSet t = new TreeSet();
        t.add(p1);
        t.add(p2);
        t.add(p3);
        t.add(p4);

        Iterator iter = t.iterator();
        while (iter.hasNext())
        {
            System.out.println(iter.next());
        }


    }

    public static void main(String[] args)
        throws Exception

    {
        new Test();

    }
}

geht..
 
M

Muminek

Gast
Ja wenn ich normal Objekte mit einem Attribut String übergeben funktioniert dies ja auch einwand frei doch mit meinen Empfängern habe ich das Problem dass ich nicht weiß wie sie sortiert werden mit kommt es so vor als würden sie einfach geaddet werden nach einander
 
S

SlaterB

Gast
du kannst auch mal in compareTo ne Ausgabe reinschreiben

System.out.println("vergleiche nun meinen Name: "+..+" mit anderem Namen: "+..);

wenn solche Ausgaben gar nicht erscheinen oder mit leeren Namen,
dann hast du paar Hinweise, was schieflaufen könnte,

dass es bei dir nicht geht kann an tausend Sachen liegen,
dass kann hier niemand erraten,
 
M

Muminek

Gast
Hm...

ich glaube du hast die Problematik nicht ganz erkannt.
alles Funktioniert einwandfrei. Es läuft nix schief.
Die in das TreeSet geladenen Objecte werden nicht
geordnet...deswegen heißt das Thema ja auch TreeSet sortieren
und nicht mein TreeSet funktioniert nicht...
 
S

SlaterB

Gast
nun, so funktioniert aber ein TreeSet?! ;)
ein TreeSet ist eine Datenstruktur, die Objekte sortiert ablegt,
was ist denn sonst ein TreeSet?

TreeSet bietet übrigens (soweit ich das sehe) keine Operation wie sort/ resort,
wenn die Objekte bereits in einem Set drin sind und sich dann ihr Name ändert,
dann musst du das TreeSet komplett neu aufbauen


anders eine Liste wie ArrayList,
die kannst du mit Collections.sort jederzeit neu sortieren lassen
 
M

Muminek

Gast
Also wenn man ein String im TreeSet ablegt dann wird dieser alphabetisch eingeordnet!
Warum sollte man nun die compareTo Methde nicht so umschreiben das der Sortier-Algorhytmus
sich auf ein Wert im Object bezieht??
 
S

SlaterB

Gast
ein String wird sortiert abgelegt wie auch jedes andere Objekt, das Comparable implementiert,

> Warum sollte man nun die compareTo Methde nicht so umschreiben das der Sortier-Algorhytmus sich auf ein Wert im Object bezieht??
klar kann man die so umschreiben, wer bestreitet das?

warum dein RecipientMailInfo.compareTo nicht geht weiß ich nicht, was fragst du das mich? ;)
ich habe dir ein Beispiel gepostet wie es geht,

wenn dein Code aber noch aus 1000 anderen Zeilen besteht,
dann können die da reinpfuschen, da kann niemand hellsehen, wie gesagt

dein comparableTo sieht aus der Ferne betrachtet gut aus,
zum dritten Mal der Aufruf: baue System.out.println ein,
vergleiche vielleicht erst mal zwei einzelne Objekte mit vorgegebenen Namen (nennt sich TESTEN),

die richtige Größe für ein Objekt mit compareTo ist anfangs
Code:
  private class Person 
        implements Comparable 
    { 

        String name; 

        public Person(String name) 
        { 
            this.name = name; 
        } 

        public int compareTo(Object o) 
        { 
            return this.name.compareTo(((Person)o).name); 
        } 

        public String toString() 
        { 
            return this.name; 
        } 


    }
alle anderen Exemplarvariablen/ Konstruktoren stören nur
usw.

-> klein anfangen,
nicht eine neue Änderung in ein riesiges Programm reinwerfen und dann rätseln warum es nicht geht..
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J TreeSet mit compareTo sortieren Java Basics - Anfänger-Themen 2
M Treeset sortieren und ausgeben Java Basics - Anfänger-Themen 17
K TreeSet Sortieren Java Basics - Anfänger-Themen 6
R Sortieren TreeSet Java Basics - Anfänger-Themen 2
B Objete von Polygon mit TreeSet verwalten Java Basics - Anfänger-Themen 1
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
J Klassen HashSet, TreeSet: unregelmäßige Zahlenreihen beim Befüllen Java Basics - Anfänger-Themen 7
J Objecte in TreeSet einfügen klappt nicht Java Basics - Anfänger-Themen 5
G Laufzeit/ O/Θ-Notation einer Treeset Methode Java Basics - Anfänger-Themen 0
W Add zu TreeSet Probleme Java Basics - Anfänger-Themen 6
T TreeSet sortiert in ein anderes kopieren Java Basics - Anfänger-Themen 2
Todesbote Treeset - Wenn bestimmtes Objekt vorkommt Counter erhöhen Java Basics - Anfänger-Themen 6
Todesbote Map<String, Treeset> aus Treeset bestimmten Wert auslesen Java Basics - Anfänger-Themen 4
A Treeset per For-Schleife durchlaufen Java Basics - Anfänger-Themen 2
U TreeSet und Komparatoren Java Basics - Anfänger-Themen 6
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
B Lotto mittels TreeSet Java Basics - Anfänger-Themen 3
D Datentypen TreeSet aus einer List<String[]> befüllen Java Basics - Anfänger-Themen 18
E TreeSet Element löschen Java Basics - Anfänger-Themen 9
T treeSet durchsuchen Java Basics - Anfänger-Themen 2
G HashSet vs. TreeSet Java Basics - Anfänger-Themen 3
M Problem beim Löschen des ersten Eintrags einer TreeSet Java Basics - Anfänger-Themen 3
J TreeSet methode Remove Java Basics - Anfänger-Themen 13
C Maximal-Anzahl von Objekten in TreeSet Java Basics - Anfänger-Themen 7
S TreeSet und StringTokenizer Java Basics - Anfänger-Themen 6
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J HashSet mit Comparable sortieren Java Basics - Anfänger-Themen 13
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
O Sortieren mit Insertion Sort Java Basics - Anfänger-Themen 3
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Jambolo Karten sortieren nach Rang und Farbe Java Basics - Anfänger-Themen 5
rosima26 Java nach letzter Ziffer sortieren Java Basics - Anfänger-Themen 19
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
K verschiedene Eingaben sortieren Java Basics - Anfänger-Themen 6
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57
K Java sortieren. Java Basics - Anfänger-Themen 7
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
J Tabelle Sortieren Java Basics - Anfänger-Themen 48
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
L Sortieren Java Basics - Anfänger-Themen 1
C Wie 2 Arrays zusammenfügen und sortieren? Java Basics - Anfänger-Themen 11
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
javaluke Erste Schritte Array nach Datentyp sortieren Java Basics - Anfänger-Themen 16
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
W Personen sortieren mit Comparator Java Basics - Anfänger-Themen 9
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
L Array sortieren Java Basics - Anfänger-Themen 4
L Java Int-Array, Zahlen sortieren Java Basics - Anfänger-Themen 8
T Java: Array monat absteigend sortieren? Java Basics - Anfänger-Themen 1
B Liste sortieren? Java Basics - Anfänger-Themen 4
P Array Sortieren mit boolean? Java Basics - Anfänger-Themen 33
scratchy1 Array sortieren und dann String-Repräsentation ausgeben Java Basics - Anfänger-Themen 2
O Arrays sortieren in einer Methode Java Basics - Anfänger-Themen 2
E Methoden 2 Arrays sortieren (MergeSort) Java Basics - Anfänger-Themen 3
B Suchen und sortieren Java Basics - Anfänger-Themen 10
F Zahlen im Feld sortieren + Unterprogramm Java Basics - Anfänger-Themen 4
O Zweidimensional Array sortieren Java Basics - Anfänger-Themen 14
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
CptK Variablen Teile eines Arrays zufällig sortieren Java Basics - Anfänger-Themen 7
K Methoden Array[][] sortieren Java Basics - Anfänger-Themen 30
CptK Datentypen Integer ArrayList sortieren Java Basics - Anfänger-Themen 2
E ArrayList sortieren Java Basics - Anfänger-Themen 16
L Methode zum sortieren Java Basics - Anfänger-Themen 1
L Methode zum sortieren Java Basics - Anfänger-Themen 1
B Sortieren mit Iterator Java Basics - Anfänger-Themen 4
B Wie kann ich die Buchstaben sortieren nach der Höhe der Zahlen Java Basics - Anfänger-Themen 14
A Sortieren ausgerechneter Werte aus einer TXT Datei Java Basics - Anfänger-Themen 8
E LMC (Assembler) Sortieren von 3 Zahlen Java Basics - Anfänger-Themen 4
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
A Array sortieren Java Basics - Anfänger-Themen 1
N StringArray alphabetisch sortieren Java Basics - Anfänger-Themen 4
Tommy135 Erste Schritte JavaDoc Sortieren Java Basics - Anfänger-Themen 5
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
D Arraylisten sortieren bitte um Hilfe Java Basics - Anfänger-Themen 4
informatikschüler21 String im Array sortieren Java Basics - Anfänger-Themen 4
U Methoden Zweidimensionales Array mit Arrays.sort sortieren? Java Basics - Anfänger-Themen 22
M Arrays sortieren und kleinster Abstand Java Basics - Anfänger-Themen 3
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
N TreeMap alphabetisch sortieren? Java Basics - Anfänger-Themen 3
I <List> sortieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben