MutliKeyMap реализация - PullRequest
       7

MutliKeyMap реализация

1 голос
/ 27 февраля 2010

Мне нужно реализовать MultiKeyMap, где я могу иметь 2 ключа и значение. Я искал коллекции Apache MultiKeyMap, но я не уверен, что это лучший. Моя проблема в том, что мне нужно использовать этот MultiKeyMap в веб-среде, и реализация Apache не является поточно-ориентированной (и Collections.synchronizedMap (..) не работает).

Есть идеи? Спасибо!

Ответы [ 2 ]

4 голосов
/ 27 февраля 2010

Возможно, я нашел решение с помощью класса MultiKey из коллекций Apache:

Map myMap = Collections.synchronizedMap(new LinkedHashMap());
myMap.put(new MultiKey(1,3), "text");

Таким образом, я могу использовать многоключевой синхронизированный подход!

3 голосов
/ 27 февраля 2010

Да, как предлагает andrew007, вы можете использовать MultiKey. Хотя, если бы я был тобой, я бы реализовал свой собственный класс, назову его чем-то вроде BiKey или даже чем-то более значимым. Одна из причин в том, что MultiKey не генерируется.

Подводя итог, почему вы не делаете что-то вроде:

ConncurrentMap<BiKey,Stuff> map = new ConcurrentHashMap<BiKey,Stuff>();

class BiKey{
    Key1 k1;
    Key2 k2;
    //let equals return k1.equqls&&k2.equals and implement hashCode accordingly
 }

ConcurrentHashMap действительно хорошо масштабируется, и в нем есть несколько полезных операций, которые могут пригодиться.

...