如何使用键和集合列表保留地图?

时间:2011-12-14 15:02:46

标签: java tree maps set treemap

所以我试图将一串单词作为键放入地图中,并将一组字符串作为值放入地图中。 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);

所以person1是:

 Apples
 Apples
 Pears 
 Oranges
 Apples

和第2个人是:

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

当我将person1和person2放入地图并运行程序时,Java会更新密钥的值(苹果可能是Love,Like和OK,但由于最后一个值正常,因此将其设置为OK)

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

我想要的是:

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

这可能吗?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:2)

使用:

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

答案 1 :(得分:1)

您正在寻找Guava Multimaps之类的内容。您可以选择那里的任何实现。

答案 2 :(得分:1)

您需要检索已与该关键字相关联的Set,并将新单词添加到该集合中。只有当密钥没有设置时才应创建新的设置。

Set<String> set = map.get(person1);
if (set == null) {
    set = new TreeSet<String>();
    map.put(person1, set);
}
set.add(person2);