java - Java Streams:获取列表中一组字符的总和
问题描述
我有这个数据结构和一些示例内容:
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();
}
但是,我几乎可以肯定有一种更聪明的方法可以用流来做到这一点。我就是想不通。有人有想法吗?
解决方案
您应该将集合映射到它们的大小,然后您可以应用sum()
:
aList.stream().mapToInt(p -> p.size()).sum();
或者按照 khelwood 的建议:
aList.stream().mapToInt(Set::size).sum();
推荐阅读
- python - 当我在 Python 中有小数点和一千个逗号时,如何更改数据类型?
- axapta - 非系统管理员用户无法在全局通讯簿地址中选择记录
- r - 返回一行中的特定值
- php - 如何从 SimpleXML 复制包含“href”的文本?
- sql-server - SQL SERVER 16 生成附近的语法不正确
- c++ - 矢量擦除调用了错误的析构函数
- typescript - TS接口静态名称和[key:string]
- ruby-on-rails - 如果在发送电子邮件操作期间引发异常,Rails 5 会重试发送电子邮件
- r - 合并而不丢失任何行
- excel - VBA Excel: how to use a variable for the file number used for open, print and close