Treemap mit zusammengesetzten Key erstellen

Status
Nicht offen für weitere Antworten.
H

HyperHyper

Mitglied
Ich würde gerne eine Treemap erzeugen, dessen KEY aus 2 String-Objekten (Name und Vorname) besteht. Einfach nur die 2 Strings zu einem einzigen zu verbinden darf es nicht sein, da ich nach Name und auch Vorname im Treemap suchen möchte.
Jemand ne Idee wie das funktioniert?

Könnte man eigentlich auch ein Objekt erzeugen (z.B eine ArrayList oder eine eigene Bean) welche die 2 Variabel speichert? Die Frage ist dann halt wie die Treemap dann den Baum aufbaut damit.

Das ganze noch mit Java 1.4

Vielen dank!
 
foobar

foobar

Top Contributor
Könnte man eigentlich auch ein Objekt erzeugen (z.B eine ArrayList oder eine eigene Bean) welche die 2 Variabel speichert?
Klar, was spricht dagegen? Du mußt nur darauf achten, daß du in der Bean hashCode und equals überschreibst, damit die Beans korrekt verglichen werden können.
 
H

HyperHyper

Mitglied
Hast du einen kleinen Beispielcode dafür? Muss man eigentlich dann nicht auch noch "compareTo" überschreiben?
 
foobar

foobar

Top Contributor
Klaro:

Code:
import java.util.*;


public class TreeMapDemo
{
    private static class Person
    {
        private String firstName, lastName;
        
        public Person(String firstName, String lastName)
        {
            super();
            this.firstName = firstName;
            this.lastName = 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 int hashCode()
        {
            final int PRIME = 31;
            int result = 1;
            result = PRIME * result + ((firstName == null) ? 0 : firstName.hashCode());
            result = PRIME * result + ((lastName == null) ? 0 : lastName.hashCode());
            return result;
        }

        public boolean equals(Object obj)
        {
            if (this == obj) return true;
            if (obj == null) return false;
            if (getClass() != obj.getClass()) return false;
            final Person other = (Person) obj;
            if (firstName == null)
            {
                if (other.firstName != null) return false;
            }
            else if (!firstName.equals(other.firstName)) return false;
            if (lastName == null)
            {
                if (other.lastName != null) return false;
            }
            else if (!lastName.equals(other.lastName)) return false;
            return true;
        }

        public int compareTo(Object o)
        {
            if (o instanceof Person)
            {
                if (getFirstName().equals(((Person)o).getFirstName()))
                {
                    return this.getLastName().compareTo( ((Person) o).getLastName().toString());    
                }
                return this.getFirstName().compareTo( ((Person) o).getFirstName().toString());
            }
            return 0;
        }
   }
    
    public static void main(String[] args)
    {
        Map myMap = new TreeMap();
        myMap.put(new Person("foo","bar"), new Integer(12345));
        myMap.put(new Person("baz","quux"), new Integer(67890));
        // do something ...
    }
}

P.S. hashCode und equals kann man seit Version 3.2 von Eclipse generieren lassen ;-)
 
H

HyperHyper

Mitglied
Super, vielen dank!!!!

Habe die "compareTo"-Methode so gebastelt. Ist das ok so oder falsch?

Code:
public int compareTo(Object other) throws ClassCastException
{
   Person o = (Person)other; 
		
   if (!this.firstName.equals(o.getFirstName()))
	return this.firstName.compareTo(o.getFirstName());
   else
	return this.lastName.compareTo(o.getLastName());	
}
 
H

HyperHyper

Mitglied
Nächste Frage, wie kann ich nun in der TreeMap gezielt nur nach dem Vornamen oder Nachnamen suchen? Angenommen das Programm soll mir alle Objekte löschen welche den Vornamen "xyz" tragen. Wie stelle ich das an?
 
S

SlaterB

Gast
geht gar nicht,
eine TreeMap -> ein Index,

du brauchst wohl je eine für Vor- und Nachnamen,
oder du baust dir eine eigene Map die zwei Indexe hat,
viel anders wird das dann aber nicht
 
foobar

foobar

Top Contributor
Du mußt mit Hilfe des Iterators über die Map iterieren und dann die enstprechenden Elemente über it.remove() entfernen.
 
G

Guest

Gast
Klar, aber wie stelle ich an das ich direkt an die Stelle in der Treemap springen kann, wo das erste Element sich befindet welches ich löschen soll? Wenn ich die gesamte Treemap durchlaufen muss, kann ich ja gleich eine HashMap nehmen oder?
 
S

SlaterB

Gast
In der Vornamen-Map suchen, Objekte merken und dort löschen.

Mit allen zugehörigen Nachnamen in der Nachname-Map suchen und dort auch löschen, aber nur die, die den gesuchten Vornamen haben.
 
foobar

foobar

Top Contributor
Klar, aber wie stelle ich an das ich direkt an die Stelle in der Treemap springen kann, wo das erste Element sich befindet welches ich löschen soll?
Wie stellst du dir das vor? Was versprichst du dir überhaupt von einer TreeMap?
 
H

HyperHyper

Mitglied
Meine Idee war das die Treemap meine Objekte (welche Vorname und Nachname) enthalten sortieren und ich später dann die Menge erhalte in welcher der Vorname ="xyz" ist oder Nachname="abc". Hm aber so wie ich das sehe geht das nur wenn ich 2 Treemaps erzeuge.
 
S

SlaterB

Gast
Du könntest auch einen Indx nehmen für Vor- und Nachname gleichzeitig.

Dann musst du bei allen 'Bernd'-Ergebnissen eben nachschauen, ob es der Vorname 'Bernd' oder der Nachname 'Bernd' ist.
Dürfte wenig Aufwand sein.
 
H

HyperHyper

Mitglied
Wie sollte dieser Index aussehen? Meinst du als Key einen String welcher aus Vorname+Leerzeichen+Nachname besteht?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Map (TreeMap in TreeMap) Java Basics - Anfänger-Themen 1
N TreeMap alphabetisch sortieren? Java Basics - Anfänger-Themen 3
O Erste Schritte TreeMap nach Value sortieren Java Basics - Anfänger-Themen 2
H Collections Was ist schneller - HashMap + Sort v TreeMap? Java Basics - Anfänger-Themen 75
D TreeMap: Höheren Key ermitteln und den Value liefern Java Basics - Anfänger-Themen 3
C TreeMap Abfragen Problem Java Basics - Anfänger-Themen 7
F HashMap vs. TreeMap Java Basics - Anfänger-Themen 5
I TreeMap Java Basics - Anfänger-Themen 4
H TreeMap/HashMap synchronisieren Java Basics - Anfänger-Themen 2
M TreeMap Java Basics - Anfänger-Themen 4
H TreeMap<> statt TreeMap<Long, String> Java Basics - Anfänger-Themen 2
algebraiker TreeMap<Date,Object> navigieren? Java Basics - Anfänger-Themen 24
W Treemap remove Java Basics - Anfänger-Themen 5
N Frage zu TreeMap Java Basics - Anfänger-Themen 3
B OOP Jtree aus TreeMap<String, String[]> erstellen? Java Basics - Anfänger-Themen 6
H Datentypen TreeMap<Double, Object> - negative Werte? Java Basics - Anfänger-Themen 4
H TreeMap.remove(value) - und nicht mit key! Geht das? Java Basics - Anfänger-Themen 18
H TreeMap Rückgabe - Compiler-Warnings Java Basics - Anfänger-Themen 9
S Studentenverwaltung mit TreeMap Java Basics - Anfänger-Themen 8
F Treemap und Sortierung? Java Basics - Anfänger-Themen 2
G TreeMap Java Basics - Anfänger-Themen 6
T TreeMap lässt sich nicht sortieren Java Basics - Anfänger-Themen 8
P wie clont sich eine TreeMap? Java Basics - Anfänger-Themen 8
G TreeMap Probleme. Java Basics - Anfänger-Themen 10
G TreeMap vom 1. bis letzte eintrag durchgehen Java Basics - Anfänger-Themen 17
F TreeMap speichern und lesen Java Basics - Anfänger-Themen 3
Q TreeMap immer sortiert halten Java Basics - Anfänger-Themen 9
G TreeMap sortieren über ArrayList als Value Java Basics - Anfänger-Themen 9
O TreeMap nach Object[] casten? Java Basics - Anfänger-Themen 3
JaVaN0oB Bruchklasse erstellen Java Basics - Anfänger-Themen 9
N Kreismuster auf Bestehendem Kreis erstellen Java Basics - Anfänger-Themen 10
K Rahmen erstellen mit mehrdimensionalem Array Java Basics - Anfänger-Themen 1
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
F Adjunkte Matrix erstellen Java Basics - Anfänger-Themen 3
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
GermanPie Discord Text Channel erstellen? Java Basics - Anfänger-Themen 1
K Objektdiagramm erstellen Java Basics - Anfänger-Themen 3
C Wie kann ich Versionen eines Projektes in Eclipse erstellen? Java Basics - Anfänger-Themen 3
D Klassen Klassendiagramm richtig erstellen Java Basics - Anfänger-Themen 20
S Objekte indiziert erstellen Java Basics - Anfänger-Themen 27
C eigene Methoden erstellen (Instanzmethoden) Java Basics - Anfänger-Themen 7
B Methode für jede beliebe Entity erstellen Java Basics - Anfänger-Themen 7
E Filmsammlung erstellen Java Basics - Anfänger-Themen 6
B Eine Methode erstellen Java Basics - Anfänger-Themen 3
M Erstellen eines insets Objekts, GridBagLayout Java Basics - Anfänger-Themen 13
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
N String N-Gramme mit Stream erstellen Java Basics - Anfänger-Themen 7
K Quersumme erstellen Java Basics - Anfänger-Themen 7
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
D Input/Output Mehrzeiligen String aus Textdatei erstellen Java Basics - Anfänger-Themen 5
C Erstellen eines Widerstandsnetzwerks Java Basics - Anfänger-Themen 10
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
A Taschenrechner mit Gui erstellen Java Basics - Anfänger-Themen 9
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
S Hilfe : Unendlich viele Zufallszahlen erstellen? Java Basics - Anfänger-Themen 8
P Arrays "automatisch" erstellen lassen Java Basics - Anfänger-Themen 12
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5
D Zusammenhängenden Graphen für Gleisnetz erstellen Java Basics - Anfänger-Themen 13
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
M Writer für unterschiedliche Obj/inbt/double erstellen? Java Basics - Anfänger-Themen 1
Kirby.exe Generische Objekt Instanz erstellen Java Basics - Anfänger-Themen 14
P Fractal erstellen Java Basics - Anfänger-Themen 4
H Objekt mit Methode erstellen Java Basics - Anfänger-Themen 6
C Java Warenkorb erstellen Java Basics - Anfänger-Themen 10
L Queue mithilfe von 2 Stacks erstellen Java Basics - Anfänger-Themen 1
M Erstellen eines Stacks Java Basics - Anfänger-Themen 14
D java main methode kann nicht kompiliert werden (Erstellen eines Objekts) Java Basics - Anfänger-Themen 6
S Methode in der Klasse erstellen Java Basics - Anfänger-Themen 2
B Mit methode Objekt aus anderer Klasse erstellen Java Basics - Anfänger-Themen 6
G "Ladebalken" erstellen - Übung Java Basics - Anfänger-Themen 3
K Klassen Klasse erstellen, die Punkte eines Koordinatensystems repräsentiert? Java Basics - Anfänger-Themen 3
Tommy135 Event erstellen Java Basics - Anfänger-Themen 7
C Pyramide aus * erstellen Java Basics - Anfänger-Themen 23
Freshy Java Hyperlink erstellen Java Basics - Anfänger-Themen 11
D Ausführbare jar/exe aus JAVAFX Projekt erstellen (IntelliJ) Java Basics - Anfänger-Themen 14
O Anonyme Klasse einer Liste erstellen Java Basics - Anfänger-Themen 7
B Signatur erstellen - Bild ist nur weiß Java Basics - Anfänger-Themen 0
F Erstellen zweier Objekte mit dem selben Inhalt Java Basics - Anfänger-Themen 1
S Arrays erstellen Java Basics - Anfänger-Themen 6
D Algorithmus in Pseudocode mit log2(n) Operationen erstellen Java Basics - Anfänger-Themen 3
J ShortCut erstellen aber wie die dll einbinden Java Basics - Anfänger-Themen 3
D Methoden Textdokument erstellen und auslesen. Java Basics - Anfänger-Themen 46
H Bilddateien erstellen und beschreiben mit Java... Java Basics - Anfänger-Themen 3
A Mit Rekursion Zufallszahlen erstellen und größte finden Java Basics - Anfänger-Themen 5
J Eine Liste von Listen erstellen Java Basics - Anfänger-Themen 11
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
UnknownInnocent Best Practice Klassendiagramm aus fertigen Klassen erstellen lassen Java Basics - Anfänger-Themen 2
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
A Liste aus drei Strings erstellen Java Basics - Anfänger-Themen 5
F Abrechnungsprogramm erstellen Student (Anfänger) Java Basics - Anfänger-Themen 2
T Klassen Klassenübergreifende Objekte erstellen lassen Java Basics - Anfänger-Themen 5
D new arraylist (List) dynamisch erstellen Java Basics - Anfänger-Themen 1
S Runde Buttons erstellen Java Basics - Anfänger-Themen 10
UnknownInnocent Methoden JLabel erstellen & verschieben Java Basics - Anfänger-Themen 1
I Methode addCharacter erstellen Java Basics - Anfänger-Themen 34
J ArrayList Name mit String erstellen Java Basics - Anfänger-Themen 8
G Sequenzdiagramm erstellen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Anzeige

Neue Themen


Oben