暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

去重

yuerer 2024-05-23
122
在Java中,可以使用Stream API来对含有实体的列表进行去重操作。这里假设实体类有一个属性,我们希望根据这个属性来去重。

以下是一个示例代码,演示了如何根据实体类的某个属性去除列表中的重复元素:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

class Entity {
    private int id;
    private String name;

    // 构造函数、getter和setter省略

    public int getId() {
        return id;
    }
}

public class UniqueEntities {
    public static void main(String[] args) {
        List<Entity> entities = new ArrayList<>();
        // 假设entities已经被填充了可能包含重复id的实体

        List<Entity> uniqueEntities = entities.stream()
                .collect(Collectors.collectingAndThen(
                        Collectors.toMap(Entity::getId, entity -> entity, (e1, e2) -> e1),
                        map -> new ArrayList<>(map.values())
                ));    List<Entity> uniqueEntities1 = entities.stream()
                .collect(Collectors.collectingAndThen(
                        Collectors.toMap(Entity::getId, obj -> obj , (existing, replacement) -> existing),
                        map -> new ArrayList<>(map.values())
                ));

        // uniqueEntities现在包含了去重后的实体列表
    }
}

在这个例子中,Entity::getId 是一个函数,它用于获取实体的 id 属性,作为去重的依据。Collectors.toMap 用于创建一个映射,其中键是实体的 id,值是实体对象。如果遇到相同的 id,则选择第一个实体对象 (e1, e2) -> e1。最后,我们使用 collectingAndThen 来转换这个映射为一个实体对象的列表。
最后修改时间:2024-05-23 23:20:55
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论