比较Java中的两个对象列表以删除重复项

时间:2015-07-22 07:21:50

标签: java

我有两个对象列表。我通过查询数据库构建了这个列表。

对于Ex:

List<Employee> firstList={holDate,holName,createdby,empId}
List<Employee> seconList={holDate,holName,createdby,empId} 

现在,我需要将holDate的{​​{1}},holNamefirstList的{​​{1}},holDate进行比较。如果在holName中找不到secondList holDate holName,我需要将其添加到单独的列表中。

列表可以是任何顺序。

注意:empId是主键列。

更新 - 我尝试过的内容:

firstList

样本列表值:

firstList = {{2015-08-15,“独立日”,“e1”,“Empl”},{2015-01-26,“共和国日”,“e1”,“Empl”},{2015 -09-20,“阵亡将士纪念日”,“e1”,“Empl”}}
seconList = {{2015-08-15,“独立日”,“e1”,“Emp2”},{2015-10-25,“感恩节日”,“e1”,“Emp2”}}

这里,newlist应该包含seconList中可用的所有值以及来自firstList的“RepublicDay”,“MemorialDay”

2 个答案:

答案 0 :(得分:1)

检查

 for (Employee emp : firstList) {
        boolean found=false;
        for (Employee tgtEmp : seconList) {
            if ((emp.getHolDate().equals(tgtEmp.getHolDate())) && (emp.getHolName().equals(tgtEmp.getHolName()))) {
                found=true;
                break;
            }
        }
        if(!found){
            printList.add(emp);
        }
    }

答案 1 :(得分:0)

我认为上述答案并非一般。想想如果在Emp对象上添加任何新字段,则需要更新equals方法。如果您愿意接受新的解决方案,那么请考虑以下答案

Assert List in Junit