我需要根据对象ID从Stream中筛选出重复项...这是我的try :

private Function<Stream<Person>, Stream<Person>> filterDuplicates() {
    return stream -> stream
        .collect(
            collectingAndThen(
                toCollection(() -> new TreeSet<>(comparingLong(Person::getId))),
                ArrayList::new))
        .stream();
}

因为我还需要Stream分,能不能把Stream分过滤到Stream分而不用中间的ArrayList分呢?

推荐答案

我可能误解了你的要求.为什么不从TreeSet流式传输而不收集到ArrayList?

private static Function<Stream<Person>, Stream<Person>> filterDuplicates() {
    return stream -> stream
        .collect(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparingLong(Person::getId))))
        .stream();
}

Java相关问答推荐

编译期间错误(Java 0000)Android .Net MAUI

为什么如果数组列表中有重复项,我的代码SOMETIMES不返回true?

Java中不同包中的类之间的配置共享

Java中如何根据Font.canDisplay方法对字符串进行分段

Java 21虚拟线程执行器的性能比池化操作系统线程的执行器差?

内存中的H2修剪尾随空格

如何从错误通道回复网关,使其不会挂起

Spring安全令牌刷新和JWT签名与本地计算的签名不匹配

垃圾收集时间长,会丢弃网络连接,但不会在Kubernetes中反弹Pod

AWS Java SDK v2.x中没有setObjectAcl方法

Java 21中泛型的不兼容更改

如何在运行docker的应用程序中获取指定的配置文件

在打开搜索结果时,如何让Eclipse打开整个文件?

没有Tomcat,IntelliJ如何在本地运行API?

无法在IntStream上应用Collectors.groupingBy

活泼的一次判断成语,结果中等

Java List有一个在一个位置添加多个元素的方法,但我找不到一个在一个位置删除多个元素的方法

如何使用jOOQ在PostgreSQL中从枚举类型生成Java枚举

Java编译器是否进行了持续的折叠优化,以及如何进行判断?

放置在变量中的Java成员引用不相等