繁体   English   中英

Java Streams:获取列表中一组字符的总和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM