Datenstrukturen

Status
Nicht offen für weitere Antworten.
J

JavaBeginner2

Gast
Hi
habe mir schon vieles hier durchgelesen trotzdem komme ich mit Datenstrukturen nicht richtig zu recht.

Ich brauche eine Datenstruktur die ungeornet ein paar ca 10 Objecte hält. Die Object haben alle einen Integer wert. Dieser Wert ist eindeutig und deshalb darf dieser auch nicht doppelt in der Datenstruktur vorkommen. Wenn ich nun eine Hashmap nehme und den Integer wert als Schlüssel nehme klappt es nicht weil dieser es dem Object zu ordnet und nicht dem echtem Integer Wert zu ordnet. Später will ich dann anhand des Integer Wertes das Object wieder aus der Datenstrukur nekommen. Wie mach man das jetzt?
Welche Datenstruktur würdet Ihr mir empfehlen.

Schöne Grüße

JavaBeginner2
 

byte

Top Contributor
Also mathematisch gesehen suchst Du eine 'Menge'. Du solltest (falls Du das noch nicht getan hast) Dir das Java Collection Framework einmal genauer anschauen. Spontan würde ich Dir zum TreeSet raten. Das ist eine Menge (engl. Set), die intern als Baum sortiert ist und daher recht fix is beim Auffinden von Elementen.

Edit: Da war ich wohl etwas vorschnell. Du suchst ja eine ungeordnete Menge. Schau Dir einfach mal Set an und such Dir eine Implementierung aus, die zu Deinem Problem passt:

http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html
 
J

JavaBeginner2

Gast
Ja

aber wie suche ich dann das ELement aus der List wieder raus. Ich möchte ja dann zum Beispiel sagen gib mir das Element mit dem, welches den intwert 67 hat. Oder geht das so gar nicht. Muss ich denn unbedingt über die Liste itterieren um heraus zu finden ob das Object welches den Intwert als Eigenschaft hat existiert bzw zu bekommen.

Schöne Grüße

JavaBeginner2
 

Leroy42

Top Contributor
Vielleicht ein HashSet ???:L

Die Java-Insel meint
Ein java.util.HashSet verwaltet die Elemente in einer schneller Hash-basierten Datenstruktur.
Dadurch sind die Elemente schnell einsortiert und schnell zu finden.
Falls eine Sortierung nötig ist, müssen die Elemente nachträglich sortiert werden.

Habe selbst aber keine Erfahrung damit :?
 

SnooP

Top Contributor
Wenn du das HashSet verwendest, kannst du lediglich nen Iterator verwenden der das Set durchgeht und beim richtigen Element dieses zurückgibt...

sprich - du musst dir die get-Methode schon selbst nachbauen - da du ja auch auf ein bestimmtes Feld der Objekte zugreifen möchtest - das kann ja keiner ahnen welches das sein soll, da man grundsätzlich alles in Collections einfügen kann.
 
B

bygones

Gast
ein Set hat keine get Methode, man muss über das set iterieren um ein spezielles element zu erreichen.

Ich versteh ehrlich gesagt nicht wirklich was dein Problem ist - wenn du konkreten Zugriff auf ein Objekt per Key haben willst ist eine Map struktur am sinnvollsten !
 
J

JavaBeginner2

Gast
Hi
das Problem ist das der key ein Object ist. Ich habe aber zu dem Object nicht nicht immer den gleichen key (Object) sondern der key ist bei mir ein primitiver Datentyp.
Schöne Grüße
JavaBeginner2
 
B

Beni

Gast
Dann benutz die Wrapperklasse:

Code:
int key = ...
Integer objectKey = Integer.valueOf( key );
// oder = new Integer( key ); in älteren Versionen

Object object = objectKey;
 
J

JavaBeginner2

Gast
Hi
Das der Key ein Object ist nicht das problem sondern das ich das Object nicht immer mit der gleichen Instanz des Keys suchen will. vielleicht verdeutlich das was ich haben will,

Integer int2 =10;
Integer int1 =10

put(myObject,int1);

put(myObject,int2);//das soll das gleiche Ergebnis liefern wie oben das int2 den gleichen Wert wie int1 hat obwohl es nicht das gleiche Object ist

Schöne Grüße

JavaBeginner2
 
B

Beni

Gast
1. Kommt der Schlüssel links, und der Wert rechts. Also genau umgekehrt wie das was du jetzt geschrieben hast.

2. Für eine Hashmap ist nur das Resultat von "hashCode" und "equals" wichtig, für eine TreeMap ist "compareTo" und "equals" wichtig. Wenn du zwei verschiedene Instanzen von Schlüssel hast, aber hashCode gleich sind, equals true gibt, compareTo 0 ist, ist das für die Map dasselbe.
 
J

JavaBeginner2

Gast
@ Beni vielen Dank genau das wollte ich wissen. Blos welchen Hschcode und equals muss ich überschreiben. dem vom Object oder dem vom Key?

Schöne Grüße

JavaBeginner2
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben