输入:Map <String,Set>地图
例如:map =
{"a"=[],
"b"=["b", "1", "2", "4"]}
预期输出:5(“ b”作为键和值出现。应计为1)
到目前为止,这是我尝试过的。有一个更好的方法吗?
Set<String> o = new HashSet<String>();
o.addAll(m1.keySet());
o.addAll(m1.values().stream().flatMap(Collection::stream).collect(Collectors.toSet()));
System.out.println(o.size());
是否可以在地图的条目集上进行流传输以达到此输出?另外,创建单独的哈希集看起来并不必要只是为了计数
您可以执行以下操作:
Set<String> o = m1.entrySet()
.stream()
.flatMap(e -> Stream.concat(Stream.of(e.getKey()),e.getValue().stream()))
.collect(Collectors.toSet());
即创建Stream<String>
的每个条目Map
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句