随笔 - 1357  文章 - 0  评论 - 1104  阅读 - 1941万

List集合中的对象按照某个字段去重实现

复制代码
package com.liying.banana.user;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

import com.liying.banana.order.vo.OrderVO;

/**
 * List集合中的对象按照某个字段去重实现
 * 
 * @author jqlin
 *
 */
public class DuplicateOrderTest {
    public static void main(String[] args) {
        List<OrderVO> orderList = new ArrayList<OrderVO>();
        OrderVO orderVO = new OrderVO();
        orderVO.setOrderNo("11");
        orderVO.setUserId("aa");
        orderList.add(orderVO);

        orderVO = new OrderVO();
        orderVO.setOrderNo("22");
        orderVO.setUserId("bb");
        orderList.add(orderVO);

        orderVO = new OrderVO();
        orderVO.setOrderNo("33");
        orderVO.setUserId("aa");
        orderList.add(orderVO);
        
        List<OrderVO> dataList = removeDuplicateOrder(orderList);
        for(OrderVO data : dataList){
            System.out.println(data.getOrderNo() + ":" + data.getUserId());
        }
    }

    /**
     * 去重
     * 
     * @param orderList
     * @return
     * @author jqlin
     */
    private static List<OrderVO> removeDuplicateOrder(List<OrderVO> orderList) {
        Set<OrderVO> set = new TreeSet<OrderVO>(new Comparator<OrderVO>() {
            @Override
            public int compare(OrderVO a, OrderVO b) {
                // 字符串则按照asicc码升序排列
                return a.getUserId().compareTo(b.getUserId());
            }
        });
        
        set.addAll(orderList);
        return new ArrayList<OrderVO>(set);
    }
}
复制代码

执行结果:

11:aa
22:bb

 

posted on   Ruthless  阅读(16410)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示