通过多个字段作为唯一标识对List对象去重

文章讲述了在Java中,如何通过比较ATNAM和MATNR字段判断列表中的记录是否重复,然后使用HashSet进行去重操作,最终得到只包含唯一标识的列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、背景

List对象定义形式和现有的值如下所示。

List<Test> testList = new ArrayList<>();
[{
    "ISDEL": "",
    "ATNAM": "Z008_80_PC_4270Y153",
    "AEDTM": "20230808",
    "MATNR": "80.PC-4270"
}, {
    "ISDEL": "",
    "ATNAM": "Z008_80_PC_4270Y153",
    "AEDTM": "20230808",
    "MATNR": "80.PC-4270"
}, {
    "ISDEL": "",
    "ATNAM": "Z008_80_PC_4270Y153",
    "AEDTM": "20230808",
    "MATNR": "81.PC-4271"
}, {
    "ISDEL": "",
    "ATNAM": "Z007_80_PC_4270Y154",
    "AEDTM": "20230808",
    "MATNR": "80.PC-4270"
}]

2、目的

如果ATNAM和MATNR都一样,就认为list中的这两条记录是一样的。

3、去重

//通过MATNR+ATNAM作为唯一标识去重

List<Test> testListOnly = removeDuplicates(testList);
private List<Test> removeDuplicates(List<Test> testList) {
    Set<String> uniqueIdentifiers = new HashSet<>();
    List<Test> result = new ArrayList<>();
    for (Test test : testList) {
        String identifier = test.getMatnr() + test .getAtnam();
        if (!uniqueIdentifiers.contains(identifier)) {
            uniqueIdentifiers.add(identifier);
            result.add(test);
        }
    }
    return result;
}

4、结果

[{
    "ISDEL": "",
    "ATNAM": "Z008_80_PC_4270Y153",
    "AEDTM": "20230808",
    "MATNR": "80.PC-4270"
}, {
    "ISDEL": "",
    "ATNAM": "Z008_80_PC_4270Y153",
    "AEDTM": "20230808",
    "MATNR": "81.PC-4271"
}, {
    "ISDEL": "",
    "ATNAM": "Z007_80_PC_4270Y154",
    "AEDTM": "20230808",
    "MATNR": "80.PC-4270"
}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值