简体   繁体   English

单行内的初始化列表

[英]Initializing list within single line

I am using multimap as shown below but as shown but the issue with this that first i am adding the contents in listand then associating it with the key, can I do it in a single line itself. 我正在使用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);

that is adding list contents where I am eneterting the key. 在我确定密钥的地方添加列表内容。 something like 就像是

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

它不是很漂亮,但是您可以按照以下方式进行操作

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

尝试以下代码:

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

你可以用

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

You are implementing Guavas Multimap by hand, I recommend you to look at the Guava solution. 您正在手工实现Guavas Multimap ,建议您看一下Guava解决方案。

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

This article nicely explains some of the advantages of the Guava Multimap implementation. 本文很好地解释了Guava Multimap实现的一些优点。

While we're at it, guava also provides a solution to initialize lists on one line ( javadoc ): 当我们使用它时,番石榴还提供了一种在一行( javadoc )上初始化列表的解决方案:

Lists.newArrayList("a", "b", "c");
Map<Integer, List<String>> multimap = new HashMap<Integer, List<String>>();

然后

multimap.put(1, new ArrayList<String>(Arrays.asList("abc", "def", "ght")));
Map<Integer, List<String>> singletonMap = Collections.singletonMap(Integer.valueOf(1), Arrays.asList("abc", "dd", "dde"));
multimap.put(1,new ArrayList<String>(Arrays.asList("element","element"))); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM