花花_新世界
从【程序猿】到【程序员】的进化历程

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"
}]

 

posted on 2024-02-26 15:47  花花_新世界  阅读(3)  评论(0编辑  收藏  举报