簡體   English   中英

單行內的初始化列表

[英]Initializing list within single line

我正在使用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 );

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

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

您正在手工實現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");
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