Hallo,
ein Hashmap kann ja verschiedene Objekte innehaben.
Wenn ich z.B. 2 Klassen haben ClassA und ClassB und
eine Klasse Repository extends Hashmap{};
nun lege ich meine Objekte wie folgt in mein Repository ein:
Repository rep = new Repository();
rep.put(„ClassA_1“,new ClassA(„A1“));
rep.put(„ClassB_1“,new ClassB(„B1“));
rep.put(„ClassB_3“,new ClassB(„B3“));
rep.put(„ClassB_4“,new ClassB(„B4“));
Wie kann ich rausfinden, wieviele Objekte ich vom Typ ClassA und wieviele vom Typ ClassB ich in meiner Repository habe?
Danke,
Fabian
Hallo Fabian,
Einfach so gar nicht. Denn deine Map nimmt als Value immer Object.
D.h du müsstest mit values() Deine Objekte rauslesen und dann drüber iterieren und mit instanceof prüfen ob das Objekt vom Typ ClassA oder ClassB ist und diese zählen.
Was einfacheres kommt mir leider nicht in den Sinn.
Gruss, Simon
Repository rep = new Repository();
rep.put("ClassA\_1",new ClassA("A1"));
rep.put("ClassB\_1",new ClassB("B1"));
rep.put("ClassB\_3",new ClassB("B3"));
rep.put("ClassB\_4",new ClassB("B4"));
int zaehlerA = 0;
int zaehlerB = 0;
Collection col = rep.values();
for (Iterator it = col.iterator(); it.hasNext():wink:
{
Object obj = it.next();
if (obj instanceof ClassA)
{
zaehlerA++;
}
else if (obj instanceof ClassB)
{
zaehlerB++;
}
}
Hi,
da deine Klasse eh schon die Hashmap erweitert, könntest du die Methode put() geeignet überschreiben und dort die registrierten Instanzen mitzählen. Entsprechend sollte das bei einem remove() wieder dekrementiert werden.
Ciao, Bill