Ich brauche eure Hilfe:
Ich muss gerade den folgenden Assoziativspeicher verwenden, blicke da aber nicht durch.
Ich benötige diese super hashmap, diese soll mir für einen key (Long) eine LinkedList<MeinObjekt> liefern
-------------------------------------------------------------------------------------------------------
1. Frage:
Wie initialisiere ich diese HashMap?
ich dachte zuerst:
code]
SuperHashMap<Long, LinkedList<MeinObjekt> >
[/code]
ABer das muss glaub wie folgt sein:
SuperHashMap<Long, MeinObjekt>
--------------------------------------------------------------------------------------------------------
2. Frage:
Wenn ich mir dann für einen Key die LinkedList<MeinObjekt> erhalten möchte habe ich das problem, dass diese immer vom Typ List<MeinObjekt> ist.
Wie kann ich diese List<MeinObjekt> in eine LinkedList<MeinObjekt> "kopieren"?
Durch die Methode: list=Collections.unmodifiableList(cast(o));
besitze ich ja nur lesezugriff auf die Liste.
Ich muss gerade den folgenden Assoziativspeicher verwenden, blicke da aber nicht durch.
Code:
public class SuperHashMap<K, V> extends TreeMap<K, Object> {
protected LinkedList<V> cast(Object o) {
return (LinkedList<V>)o;
}
public List<V> get(K key) {
Object o = super.get(key);
List<V> list=Collections.EMPTY_LIST;
if (o!=null) {
if (o instanceof LinkedList) {
list=Collections.unmodifiableList(cast(o));
} else {
ArrayList arrayList = new ArrayList<V>(1); // less overhead than linkedlist
arrayList.add((V)o);
list= Collections.unmodifiableList(arrayList);
}
}
return list;
}
public void put(K key, V value) {
Object o = super.get(key);
if (o==null) {
super.put(key, value);
} else {
if (o instanceof LinkedList) {
if (!cast(o).contains(value)) {
cast(o).add(value);
}
} else {
LinkedList<V> linkedList = new LinkedList<V>();
linkedList.add((V)o);
linkedList.add(value);
super.put(key, linkedList );
}
}
}
}
Ich benötige diese super hashmap, diese soll mir für einen key (Long) eine LinkedList<MeinObjekt> liefern
-------------------------------------------------------------------------------------------------------
1. Frage:
Wie initialisiere ich diese HashMap?
ich dachte zuerst:
code]
SuperHashMap<Long, LinkedList<MeinObjekt> >
[/code]
ABer das muss glaub wie folgt sein:
SuperHashMap<Long, MeinObjekt>
--------------------------------------------------------------------------------------------------------
2. Frage:
Wenn ich mir dann für einen Key die LinkedList<MeinObjekt> erhalten möchte habe ich das problem, dass diese immer vom Typ List<MeinObjekt> ist.
Wie kann ich diese List<MeinObjekt> in eine LinkedList<MeinObjekt> "kopieren"?
Durch die Methode: list=Collections.unmodifiableList(cast(o));
besitze ich ja nur lesezugriff auf die Liste.