Как мне сохранить карту с ключами и списком наборов? - PullRequest
1 голос
/ 14 декабря 2011

Итак, я пытаюсь поместить строку слов в качестве ключа на карту и набор строк в качестве значения на карту. Person1 - это просто строка слов, а Person2 - это набор.

Map<String, Set<String>> newMap = new TreeMap<String, Set<String>>();
Set<String> newSet = new TreeSet<String>();
newSet.add(person2);
map.put(person1, newSet);
//System.out.println(map);

То есть человек1:

 Apples
 Apples
 Pears 
 Oranges
 Apples

и человек 2:

 [Love]
 [Like]
 [Dislike]
 [Hate]
 [OK]

Когда я помещаю person1 и person2 в карту и запускаю программу, Java обновляет значение ключа (Apples может быть Love, Like и OK, но, поскольку последнее значение в порядке, оно устанавливает его в OK)

{Apples = [OK]}
{Pears = [Dislike]}
{Oranges = [Hate]}

Я хочу вот что:

{Apples = [Love, Like, OK]}
{Pears = [Dislike]}
{Oranges = [Hate]}

Возможно ли это? Если да, то как?

Ответы [ 3 ]

2 голосов
/ 14 декабря 2011

Использование:

map.get(person1).put(yourvalue);

1 голос
/ 14 декабря 2011

Вам нужно получить набор, уже связанный с ключом, и добавить новое слово в этот набор.Только если у ключа еще нет набора, вы должны создать новый набор.

Set<String> set = map.get(person1);
if (set == null) {
    set = new TreeSet<String>();
    map.put(person1, set);
}
set.add(person2);
1 голос
/ 14 декабря 2011

Вы ищете что-то вроде Мультикарты Guava .Вы можете выбрать любую из реализаций там.

...