用于计算唯一对象的 Java lambda 表达式

标签 java lambda java-8

我已经在下面设置了这个流,但不能在 .map 上使用方法 count()。仅在过滤器上。但是我没有设置任何过滤条件。我怎样才能在下面这个流的字符串数组上做到这一点?

我想根据 replaceAll 中的正则表达式对字符串进行排序,并获取唯一字符串并获取唯一字符串总数。

Stream newStream = Arrays.stream(arr)
                    .map(s -> s.replaceAll("[^a-z]", ""))
                    .distinct()

最佳答案

如果您要计算 distinct 字符串的数量,您可以这样做:

long countDistinct = Arrays.stream(arr)
        .map(s -> s.replaceAll("[^a-z]", ""))
        .distinct() // intermediate operation with unique strings as 'Stream' return type
        .count();   // terminal operation with count of such strings as return type

关于用于计算唯一对象的 Java lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54497313/

相关文章:

java - 使用 Java Stream 计算项目列表中日期的出现次数

java - 为什么我不能将 lambda 分配给未类型化的谓词引用?但是可以为它分配一个初始化的类型谓词引用吗?

java - 如何在 Java 中将对象添加到 ArrayList

java - 简单的 Java TCP 套接字协议(protocol)

Java 程序不干净地存在。创造僵尸

c++ - 带有模板的 lambda

Jinja2 中的 Python lambda

java - 更改 JTable 单元格的复制行为

c# - Lambda 表达式作为字典中的键

java - 使用 lambda 表达式按值类的成员搜索 TreeMap