2015-07-22 3 views
0

У меня есть два списка объектов. Я создал этот список, запросив базу данных.сравнить два списка объектов в Java, чтобы удалить дубликат

Для Ex:

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

Теперь мне нужно сравнить holDate, holName из firstList с holDate, holName из secondList. Если holDate, holNamefirstList не найден в secondList, мне нужно добавить это в отдельный список.

Список может быть в любом порядке.

ПРИМЕЧАНИЕ: empId является столбцом первичного ключа.

Update - то, что я пробовал:

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

Список Sample значения:

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»}}

Здесь новый список должен имеют все значения, которые доступен в seconList и «RepublicDay», «день памяти» от firstList

+1

Что такое 'Employee'? Имеет ли он собственный метод 'equals' и' hashcode', поэтому очень просто было бы просто использовать 'List # removeAll' или' List # keepAll' для идентификации дубликатов. Разумеется, вы могли бы просто обоим им в какой-то «набор» ... – MadProgrammer

+2

Вы провели какое-либо исследование, прежде чем задавать вопрос? Смотрите много вопрос, который вы можете получить в StackOverflow –

+0

Hi Renjith, пожалуйста найти ниже фрагмент кода
для (Сотрудника EMP: firstList) { \t \t \t \t \t \t \t \t для (Сотрудника tgtEmp: seconList) { \t \t \t \t \t \t \t \t \t \t если ((emp.getHolDate()! = tgtEmp.getHolDate()) && \t \t \t \t \t \t \t (emp.getHolName()! = TgtEmp.getHolName())) { \t \t \t \t \t \t перечень печати.добавить (ЭМИ); \t \t \t \t \t \t break; \t \t \t \t \t} \t \t \t \t \t \t \t \t \t \t \t \t} \t \t \t \t} – iShower

ответ

0

Проверить это

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); 
     } 
    } 
+0

Спасибо .. Это работает .. – iShower

+0

Надеюсь, что вы поняли проблему в вашем коде. – vels4j

0

Я думаю, что выше ответ не обобщенно. Подумайте, добавляете ли вы новое поле в объект Emp, тогда вам нужно обновить метод equals. Если вы открыты для принятия нового решения, пожалуйста, рассмотрят ниже ответ

Assert List in Junit

Смежные вопросы