在单行内初始化列表

时间:2013-11-13 15:57:14

标签: java

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

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 );

7 个答案:

答案 0 :(得分:4)

它不是很漂亮,但你可以按照

的方式做点什么
multimap.put(1, new ArrayList<String>(Arrays.asList("abc", "def", "ght")));

答案 1 :(得分:2)

尝试使用以下代码:

multimap.put(1, Arrays.asList(new String[]{"abc","def","ght"}));

答案 2 :(得分:1)

您可以使用

List<String> someList = Arrays.asList("abc", "def", "ght");

答案 3 :(得分:1)

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

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

这个article很好地解释了Guava Multimap实现的一些优点。

虽然我们正在使用它,但是guava还提供了在一行(javadoc)上初始化列表的解决方案:

Lists.newArrayList("a", "b", "c");

答案 4 :(得分:0)

Map<Integer, List<String>> multimap = new HashMap<Integer, List<String>>();

然后

multimap.put(1, new ArrayList<String>(Arrays.asList("abc", "def", "ght")));

答案 5 :(得分:0)

Map<Integer, List<String>> singletonMap = Collections.singletonMap(Integer.valueOf(1), Arrays.asList("abc", "dd", "dde"));

答案 6 :(得分:0)

multimap.put(1,new ArrayList<String>(Arrays.asList("element","element")));