[英]Java Streams: get the sum of a set of characters in a list
我有这个数据结构和一些示例内容:
List<Set<Character>> aList = List.of(Set.of('a', 'b', 'c'), Set.of('a', 'b', 'c'), Set.of('a', 'b', 'c'), Set.of('a'), Set.of('b'));
我想检索所有字符的总和。 在这个例子中,它将是
3 + 3 + 3 + 1 + 1 = 11
我可以这样解决:
int sum = 0;
for (Set<Character> aSet : aList) {
sum += aSet.size();
}
但是,我几乎可以肯定,使用 stream 有一种更智能的方法。 我就是想不通。 有人有想法吗?
您应该 map 将集合设置为它们的大小,然后您可以应用sum()
:
aList.stream().mapToInt(p -> p.size()).sum();
或者按照 khelwood 的建议:
aList.stream().mapToInt(Set::size).sum();
aList.stream().map(Set::size).reduce(0, Integer::sum)
首先你 map 列表的大小,然后你使用 sum 与 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.