Java将list数组中重复的对象进行去重

java 复制代码
/**
 * 数组去重
 */
public class ArrayDistinct {
    public static void main(String[] args) {
        ArrayList<Object> list = new ArrayList<>();

        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("name","张三");
        jsonObject1.put("age",20);
        jsonObject1.put("gender","男");
        jsonObject1.put("money",200);

        JSONObject jsonObject2 = new JSONObject();
        jsonObject2.put("name","李四");
        jsonObject2.put("age",20);
        jsonObject2.put("gender","女");
        jsonObject2.put("money",100);

        list.add(jsonObject1);
        list.add(jsonObject1);
        list.add(jsonObject2);
        System.out.println(list);
    }
}

输出数组结果:

javascript 复制代码
[
    {
        "gender": "男",
        "money": 200,
        "name": "张三",
        "age": 20
    },
    {
        "gender": "男",
        "money": 200,
        "name": "张三",
        "age": 20
    },
    {
        "gender": "女",
        "money": 100,
        "name": "李四",
        "age": 20
    }
]

预期结果:

javascript 复制代码
[{"gender":"男","money":200,"name":"张三","age":20}, {"gender":"女","money":100,"name":"李四","age":20}]

实现方法:在输出前加上以下代码即可实现:

java 复制代码
// 转为stream,利用distinct方法去重
list = list.stream().distinct().collect(Collectors.toList());

完整代码:

java 复制代码
public class ArrayDistinct {
    public static void main(String[] args) {
        List<Object> list = new ArrayList<>();

        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("name","张三");
        jsonObject1.put("age",20);
        jsonObject1.put("gender","男");
        jsonObject1.put("money",200);

        JSONObject jsonObject2 = new JSONObject();
        jsonObject2.put("name","李四");
        jsonObject2.put("age",20);
        jsonObject2.put("gender","女");
        jsonObject2.put("money",100);

        list.add(jsonObject1);
        list.add(jsonObject1);
        list.add(jsonObject2);

        System.out.println("去重前:"+list);
        // 转为stream,利用distinct方法去重
        list = list.stream().distinct().collect(Collectors.toList());
        System.out.println("去重后:"+list);
    }
}

输出:

相关推荐
YXWik6几秒前
Claude Code
java
小旭95271 分钟前
分布式事务 Seata 详解 + 链路追踪 SkyWalking 实战
java·分布式·后端·信息可视化·skywalking
曹牧2 分钟前
Spring:@RequestMapping 注解匹配顺序
java·后端·spring
云烟成雨TD5 分钟前
Spring AI Alibaba 1.x 系列【44】多智能体 - 混合模式、监督者(SupervisorAgent)、自定义模式
java·人工智能·spring
_日拱一卒13 分钟前
LeetCode:23合并K个升序链表
java·数据结构·算法·leetcode·链表·职场和发展
cany100013 分钟前
C++ -- 泛型编程
java·开发语言·c++
lee_curry15 分钟前
第三章 jvm中的对象和执行引擎
java·jvm·执行引擎
wang090716 分钟前
Linux性能优化之文件系统基础介绍
java·linux·性能优化
迷藏49425 分钟前
# 发散创新:用Locust实现高并发场景下的精准压力测试与性能调优实战在现代微服务架构中,**接口稳定性与响应速度**已成为衡量
java·python·微服务·架构·压力测试
空中海30 分钟前
Nacos 2: Spring Boot Demo 实战
java·spring boot·后端