Set in Array und in ConcurrentHashMap

Nobody

Mitglied
Ich habe nur zwei kurze Fragen

1) ob man das auch einfacher schreiben kann:

PHP:
private final ConcurrentMap<Integer, SetInteger> userItemMap = new ConcurrentHashMap<Integer, Set<Integer>>();//holds a Set of the last known Items
...
int tempUserID = up.getUserID();
Set<Integer> tempSet = userItemMap.get(tempUserID);
....//Iterator
tempSet.add(currItem);
userItemMap.put(tempUserID, tempSet);// das hier meine ich
...

Kurze Erklärung:
ClientServer Anwendung, die userItemMap enthält für jeden User ein Set in dem die UserID anderer User oder auch Items im allgemeinen enthalten sind, dieses Set brauche ich in obigem Beispiel Serverseitig zum Überprüfen ob dem Client das Item mit der ID 4711(Beispiel ID) bereits bekannt ist. um zu entscheiden ob er die die anweisung bekommt das Item zu Adden.

zweite Frage:
String[][];
da schreib ich einfach:
String[x][y] = itemID;

kann ich bei einem
Set<Integer>[][];
dann auch einfach
Set[x][y].add(ItemID);

schreiben (es geht hier um das .add und ob ich doch zuerst sein Set erstellen muss in das ich dann den Arrayinhalt lade um dieses Set wieder in selbiges Array zu speichern), das der DatenTyp(String - Integer) hier Unterschiedlich ist, ist mir bekannt aber ich baue gerade mehrere Klassen um, und kann gerade nicht wirklich ein Beispiel compilieren um es zu testen, sorry.

Danke im Vorraus...
 
In das Array musst du erst ein leere Set einfügen bevor du Elemente hinzufügen kannst. Ansonsten steht ja nur null im Array.

Wenn ich mit Sets oder Listen in einer Map arbeite dann mach ich das immer so:

Java:
public static <K,V> void addToSetMap(Map<K,Set<V>> map, K key, V value){
    Set<V> set = map.get(key);
    if(set == null){
        set = new HashSet<V>();
        map.put(key,set);
    }
    set.add(value);
}

Java:
Map<String,Set<Integer>> map = new HashMap<String,Set<Integer>>();
addToSetMap(map,"First",5);
addToSetMap(map,"First",7);
 

Neue Beiträge

Zurück