# Objekte mit eindeutiger ID erzeugen und drauf zugreifen



## Dirlenbacher (13. Apr 2005)

Hi,

wie kann ich beliebig viele Objekte erzeugen und anschließend beispielsweise mit einer ID auf diese Objekte zugreifen?
Z.B. Erzeuge ich immer wieder Personen mit einer Personennummer, die Klasse enthält eine Variable, die bei jedem Aufruf um 1 erhöht wird. Wie kann ich jedoch auf alle meine erstellten Objekte zugreifen wo doch der Name des erstellten Objekts immer gleich ist.
Hoffe ich habe mich einigermaßen verständlich ausgedrückt... :lol:  
cu
ulf

Kann ich ggf. Hashtable oder TreeSet verwenden?


----------



## meez (13. Apr 2005)

hashCode();


----------



## Bleiglanz (13. Apr 2005)

java.util.Map

vergiss nicht, dass eine "Referenz" auf das Objekt ganausogut ist wie eine ID...


----------



## Dirlenbacher (13. Apr 2005)

die vorgabe ist ja:

put(Key,Value)

bei mir funktioniert es aber leider nicht, dass ich statt einem String Wert für Key einen int Wert einsetze...

z.B.:


```
int PersNR=0;

Hashtable h = new Hashtable();
h.put(PersNR++,Objekt.Methode());
```

Wenn ich statt der int Variablen einen String reinschreibe funzt es. Ich WILL aber einen int Wert. Geht das überhaupt?

cu
ulf


----------



## AlArenal (13. Apr 2005)

Weil die Vorgabe genau genommen auch nicht

put(Key,Value) 

sondern

put(Object key, Object value) 

heißt und ein int ist nunmal kein Object, ein Integer dagegen schon..


----------



## Dirlenbacher (13. Apr 2005)

ähm, is zwar ein wenig peinlich, aber könntest du mir ein sinnvolles Beispiel zeigen?!
thnx
ulf


----------



## Campino (13. Apr 2005)

```
int id=3; //oder was auch immer
Integer in=new Integer(id);
map.put(in, yourObj);
```


----------



## AlArenal (13. Apr 2005)

Oder kürzer:

```
int id=3; //oder was auch immer
map.put(new Integer(id), yourObj);
```


----------



## Illuvatar (13. Apr 2005)

Noch kürzer  (Java5)

```
map.put (3, yourObj);
```


----------



## Sky (13. Apr 2005)

In wie weit wird denn die ID benötigt. Ein Vector oder eine ArrayList unterstützen dein Vorhaben prinzipiell auch: mit get(3) bekommste das 4. Elemente (weils ja bei 0 anfängt...). Nur ist dieser Index 'kaputt', sobald Du ein remove benutzt.


----------



## Dirlenbacher (13. Apr 2005)

habe direkt den Int Wert und das Objekt direkt benutzt und habe meine Methoden ein wenig umgestellt. Jetzt funzt es.
danke
cu
ulf


----------



## bygones (14. Apr 2005)

Illuvatar hat gesagt.:
			
		

> Noch kürzer  (Java5)
> 
> ```
> map.put (3, yourObj);
> ```


grmpf und hier hat sich Java ins eigene Fleisch geschnitten (soviel ich weiß)... denn:

laut java bereuen sie jemals einen public Konstruktor in die Wrapper Klassen getan zu haben. Man sollte auch NICHT new Integer(2) z.b. verwenden sondern IMMER die Methode Integer.valueOf(1) da dies gecacht ist (erst ab java5).

der 5er code put(3, obj) erzeugt aber put(new Integer(3))....

somit ist diese Abkürzung nett aber nicht sehr schön ....


----------



## meez (14. Apr 2005)

meez hat gesagt.:
			
		

> hashCode();



Hmm...Hab wohl zuerst geschrieben, und dann erst gelesen...


----------



## Bleiglanz (14. Apr 2005)

> hier hat sich Java ins eigene Fleisch geschnitten


ja, auf das Autoboxing hätte man auch gut verzichten können


----------

