Pro*_*zac 2 java java-8 java-stream
我有一个HashMap<Integer, Integer>,唯一键可以有重复的值.有没有办法将HashMap转换为Set<Integer>包含键和值的唯一整数的HashMap .
通过迭代keySet()和.values(),这绝对可以在两个循环中完成.我想知道这是否可以在java 8流中使用.
您可以使用stream函数组合值和键:
Map<Integer, Integer> map = ...
Set<Integer> total = Stream.concat(
map.keySet().stream(),
map.values().stream()
).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
这使用地图keySet().stream()并values().stream()获取两者的流,然后使用它们连接它们Stream.concat,然后最终将它变成一个集合.调用以.toSet()防止重复元素,因为一个集合不能包含重复元素.
如果键是double,并且值是浮点数,也可以使用此技巧,在这种情况下,java将返回最大的公共分隔符类,在这种情况下是Number.