Treemap mit zusammengesetzten Key erstellen

Status
Nicht offen für weitere Antworten.

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

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.
 

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 ;-)
 

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());	
}
 

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

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

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?
 

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.
 
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
XWing Int erstellen lassen? Java Basics - Anfänger-Themen 11
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
A exe Datei erstellen Java Basics - Anfänger-Themen 8
J Packages erstellen Java Basics - Anfänger-Themen 7
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
Ostkreuz Spielfeld Schatz erstellen Java Basics - Anfänger-Themen 5
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
B Klasse statisch erstellen da n-mal geladen Java Basics - Anfänger-Themen 3
laxla123 Dreieck erstellen Java Basics - Anfänger-Themen 1
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
A Passwort erstellen Java Basics - Anfänger-Themen 3
S CVS erstellen Java Basics - Anfänger-Themen 1
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
dennis_lnz Klassen Wie kann ich mein Java Textadventure verbessern, um ein Klassendiagramm zu erstellen? Java Basics - Anfänger-Themen 9
dcHost Java Kara Sensor erstellen Java Basics - Anfänger-Themen 1
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U JList erstellen Java Basics - Anfänger-Themen 2
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
berserkerdq2 IO Streams logfile erstellen und Sachen schreiben wie? Java Basics - Anfänger-Themen 2
B Teilprofil erstellen Java Basics - Anfänger-Themen 1
B Teilprofil erstellen Java Basics - Anfänger-Themen 1
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
N 2D Array Summe erstellen Java Basics - Anfänger-Themen 6
T Log Funktion erstellen Java Basics - Anfänger-Themen 1
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
S Programm erstellen Java Basics - Anfänger-Themen 3
S MinMax Programm erstellen Java Basics - Anfänger-Themen 4
S Mit for-Schleife ein 2D JLabel-Array mit veränderbaren Icons erstellen Java Basics - Anfänger-Themen 3
T Countdown erstellen Java Basics - Anfänger-Themen 7
I ZIP File erstellen Java Basics - Anfänger-Themen 10
L Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
B Zurück Button erstellen Java Basics - Anfänger-Themen 1
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
B JaxB - Referenzen erstellen? Java Basics - Anfänger-Themen 2
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
E Classpath Datai erstellen Java Basics - Anfänger-Themen 3
B eine methode erstellen Java Basics - Anfänger-Themen 7
I Entity erstellen, die für API gedacht ist Java Basics - Anfänger-Themen 33
M Packages erstellen mit Java-Editor Java Basics - Anfänger-Themen 6
L FinanzApp erstellen Java Basics - Anfänger-Themen 1
J Junit4 Klasse erstellen Java Basics - Anfänger-Themen 5
B Warteschlange erstellen mit LinkedList ? Java Basics - Anfänger-Themen 6
Animal-Mother BMI Rechner erstellen für W/M Java Basics - Anfänger-Themen 7
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
Ray19941 Über BlueJ Textdatei selbstständig erstellen lassen Java Basics - Anfänger-Themen 2
J Java Queue mit default Werten erstellen Java Basics - Anfänger-Themen 4
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

Ähnliche Java Themen

Neue Themen


Oben