gpt4 book ai didi

Java 8 按属性过滤

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:50 27 4
gpt4 key购买 nike

我有一个定义如下的类

public class MyClass {
int val;
type t;
}

其中 type 是一个枚举值 A,B,C,D,....

我有一个 MyClass 的对象列表,我想过滤掉列表中出现的每种类型的第一个元素。

例如:-

给定列表:

{{1,A},{2,A},{4,B},{5,B},{3,C}}

输出:

{{1,A},{4,B},{3,C}}

有没有办法使用列表流的filter()来解决这个问题?

最佳答案

我不确定是否有办法用单个 Stream 来做到这一点管道,但你可以用两个来完成。

第一个管道按 val 对对象进行分组属性(产生一个 Map<Integer,List<MyClass>> ),第二个获取每个 List 的第一个对象由第一个管道生成并将它们收集到输出中 List :

List<MyClass>
filtered = mycl.stream ()
.collect (Collectors.groupingBy (c -> c.val))
.values ()
.stream ()
.map (l -> l.get (0))
.collect (Collectors.toList ());

关于Java 8 按属性过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46148694/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com