Поведение Map
и HashMap
, которое вы описываете, является предполагаемым поведением, как отмечают другие комментаторы. То, что вы хотите, это мультикарта. Вы можете свернуть свою собственную (не делайте этого - другие комментаторы предлагают карты для списков, но это быстро становится громоздким. Если вы действительно хотите свернуть свою собственную, сверните свою собственную общую мультикарту со значениями списка/набора и скройте сложность. ) или используйте Guava множественная карта. Пример:
import com.google.common.collect.HashMultimap;
import com.google.common.collect.SetMultimap;
public static void main(String[] args)
{
final SetMultimap<Integer, Integer> foo = HashMultimap.create();
foo.put( 1,35);
foo.put( 1,30);
foo.put( 1,20);
foo.put( 2,10);
foo.put( 3,40);
foo.put( 3,25);
foo.put( 3,15);
System.out.println(foo);
}
Выход:
{1=[35, 20, 30], 2=[10], 3=[25, 40,
15]}
Если вы хотите получить доступ к значениям, есть несколько способов в зависимости от того, что вы хотите сделать. Просто вызов get(Integer key)
вернет набор значений.
Кроме того, проверьте этот ответ, в котором приводится много полезного в гуаве.
person
andersoj
schedule
16.12.2010