我有一个ArrayListMultimap喜欢
ArrayListMultimap<Long, String> multiMap = ArrayListMultimap.create();
multiMap.put(100L,"test1");
multiMap.put(750L,"test0");
multiMap.put(50L, "test2");
multiMap.put(500L, "test3");
multiMap.put(200L, "test45");
multiMap.put(200L, "test000");
multiMap.put(60L, "test48");
Run Code Online (Sandbox Code Playgroud)
这给了我{50=[test2], 100=[test1], 500=[test3], 200=[test45, test000], 60=[test48], 750=[test0]}。
我想将所有键添加到列表中,但是需要根据值列表的大小添加具有多个值的键。例如,在上面的示例中,200由于其值的大小为2 ,因此我想被添加到列表两次。我尝试使用,ArrayList<Long> keyList = pathSizeMap.keySet()但这只是键。如何最好使用Java 8流实现此目标?
请注意,keySet()特别要说Set(就像在没有重复条目的集合中一样)。这就是为什么您要获得每个密钥的单个副本的原因。
而不是keySet()仅使用流输入项并获取每个项的密钥:
List<Long> list = multiMap.entries().stream().map(Entry::getKey).collect(Collectors.toList());
System.out.println(list)
Run Code Online (Sandbox Code Playgroud)
输出:
[100, 200, 200, 750, 50, 500, 60]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |