1

我正在使用multimap,如下所示,但问题是首先我将内容添加到列表中,然后将其与密钥相关联,我可以在一行中完成。

Map<Integer, List<String>> multimap = new HashMap<Integer, List<String>>();
List<String> someList = new ArrayList<String>();
someList.add("abc");
someList.add("def");
someList.add("ght");
multimap.put(1, someList);

那就是在我输入密钥的地方添加列表内容。就像是

 multimap.put(1, // adding the list in a single line here itslef );
4

7 回答 7

4

它不是很漂亮,但你可以做一些类似的事情

multimap.put(1, new ArrayList<String>(Arrays.asList("abc", "def", "ght")));
于 2013-11-13T16:00:04.490 回答
2

试试下面的代码:

multimap.put(1, Arrays.asList(new String[]{"abc","def","ght"}));
于 2013-11-13T16:02:54.497 回答
1

你可以使用

List<String> someList = Arrays.asList("abc", "def", "ght");
于 2013-11-13T16:00:06.440 回答
1

您正在手动实现Guavas Multimap,我建议您查看 Guava 解决方案。

Multimap<Integer, String> multimap = HashMultimap.create();
multimap.putAll(1, Lists.newArrayList("a", "b", "c"));

这篇文章很好地解释了 Guava Multimap 实现的一些优点。

当我们这样做时,番石榴还提供了一种在一行上初始化列表的解决方案(javadoc):

Lists.newArrayList("a", "b", "c");
于 2013-11-13T16:00:23.893 回答
0
Map<Integer, List<String>> multimap = new HashMap<Integer, List<String>>();

然后

multimap.put(1, new ArrayList<String>(Arrays.asList("abc", "def", "ght")));
于 2013-11-13T16:01:24.017 回答
0
Map<Integer, List<String>> singletonMap = Collections.singletonMap(Integer.valueOf(1), Arrays.asList("abc", "dd", "dde"));
于 2013-11-13T16:01:48.237 回答
0
multimap.put(1,new ArrayList<String>(Arrays.asList("element","element"))); 
于 2013-11-13T16:02:04.337 回答