我有HashMap<String, List<User>>
我想要返回一个allList合并形式Hashmap的所有List<User>
。
并且只有一次触发语句Stream.concat(list1, Stream.concat(list2, Stream.concat(list3,Stream.concat(list4,...))))...
我的目标是更高的性能。
答案 0 :(得分:2)
如果您想要所有List<User>
的所有元素的单个Stream,则应使用flatMap
,而不是Stream.concat
:
Stream<User> users = map.values().stream().flatMap(List::stream);
然后,您可以对Stream
进行任何处理。例如,创建所有List
的{{1}}:
User
答案 1 :(得分:0)
是的,您可以对concat
所有用户列表执行折叠操作,但这样做太过分了,所以请改用其他答案中建议的方法,或者只是:
List<User> accumulator = new ArrayList<>();
for (List<User> l : map.values())
accumulator.addAll(l);