Многозначная хеш-таблица в Java - PullRequest
25 голосов
/ 26 июня 2009

Можно ли иметь несколько значений для одного и того же ключа в хэш-таблице? Если нет, можете ли вы предложить какой-либо такой класс или интерфейс, который можно использовать?

Ответы [ 13 ]

1 голос
/ 26 июня 2009

Вам нужно использовать то, что называется MultiMap . Однако это не строго карта, а другой API. Это примерно так же, как Map >, но у вас не будет таких методов, как entrySet () или values ​​().

0 голосов
/ 14 февраля 2013

Следующий код без библиотеки Google Guava. Используется для двойного значения в качестве ключа и отсортированного порядка

Map<Double,List<Object>> multiMap = new TreeMap<Double,List<Object>>();

for( int i= 0;i<15;i++)
{
    List<Object> myClassList = multiMap.get((double)i);
    if(myClassList == null)
    {
        myClassList = new ArrayList<Object>();
        multiMap.put((double) i,myClassList);
    }
    myClassList.add("Value "+ i);
}

List<Object> myClassList = multiMap.get((double)0);
if(myClassList == null)
{
    myClassList = new ArrayList<Object>();
    multiMap.put( (double) 0,myClassList);
}
myClassList.add("Value Duplicate");
for (Map.Entry entry : multiMap.entrySet()) 
{
  System.out.println("Key = " + entry.getKey() + ", Value = " +entry.getValue());
}
0 голосов
/ 07 октября 2010

Помимо Google Collections есть объект apache Commons Collection для MultiMap

...