2016-11-18 4 views
0

与えられた2つの文字列からPOJO値を比較します。すべてのEmployee pojoオブジェクトがArraylistに追加されます。は、私はPOJOクラスを持っている

class EmployeeData{ 
    Employee employee = new Employee(111,"XXX"); 
    Employee employee1 = new Employee(222, "YYY"); 
    Employee employee2 = new Employee(444, "BBB"); 
    List<Employee> listData = new ArrayList<Employee>(); 
    listData.add(employee); 
    listData.add(employee1); 
    listData.add(employee2); 

    public List<Employee> getList(List<Employee> list){ 
     return list; 
    } 
} 

最後に、別のリストとマージメソッドを持つメインクラスがあります。

class EmployeeTest{ 
    Employee employee = new Employee(111,"NNN"); 
    Employee employee1 = new Employee(222, "YYY"); 
    Employee employee2 = new Employee(333, "KKK"); 
    List<Employee> list = new ArrayList<Employee>(); 
    list.add(employee); 
    list.add(employee1); 
    list.add(employee2); 
    public List<Employee> merge(List<Employee> list){ 
    //code goes here 
    return listData; 
} 
  1. は、私は両方のリストからidを比較する必要があるとidの試合が、名前が異なっている場合、私は、リストの値を使用してlistDataプロパティの値を上書きします。

  2. idsが一致せず、333がlistDataに存在しないような場合。 idと値を追加します。最後に

  3. listDataの一部のIDがリストと一致しない場合は、削除します。 listDataから444を削除し、最後にlistDataを返します。

このようなことを試みましたが、適切な出力が得られません。助けてください。

public List<Employee> merge(List<Employee> list){ 
    if(list==null){ 
     return null; 
    } 
    List<Employee> list1 = employeeDao.getList(); 
    for(int i =0;i<list1.size();i++){ 
     for(int j=0; j<list1.size();j++){ 
      if(list.get(i).getEmpCode().equals(list2.get(j).getEmpCode())){ 
       list1.set(j, list.get(i)); 
       j++; 
      }else{ 
       j++; 
      } 
     } 
    } 
    return list; 
} 

最後の2つのロジックについて考えることはできません。助けてください

答えて

0

あなたが正解を得ているかどうかを確認してください。それは良いアプローチではありませんが、まだです。

import java.util.ArrayList; 
import java.util.List; 
import java.util.Map; 


class Employee { 
    private int empCode; 
    private String name; 
    public Employee(int empCode, String name) { 
     super(); 
     this.empCode = empCode; 
     this.name = name; 
    } 
    public int getEmpCode() { 
     return empCode; 
    } 
    public void setEmpCode(int empCode) { 
     this.empCode = empCode; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    @Override 
    public String toString() { 
     return "Employee [empCode=" + empCode + ", name=" + name + "]"; 
    } 

} 



public class Practice { 

    public static void main(String[] args) { 

     Employee employee = new Employee(111,"XXX"); 
     Employee employee1 = new Employee(222, "YYY"); 
     Employee employee2 = new Employee(444, "BBB"); 


     Employee employee3 = new Employee(111,"NNN"); 
     Employee employee4 = new Employee(222, "YYY"); 
     Employee employee5 = new Employee(333, "KKK"); 

     List<Employee> employeeDataList = new ArrayList<Employee>(); 
     employeeDataList.add(employee); 
     employeeDataList.add(employee1); 
     employeeDataList.add(employee2); 


     List<Employee> employeeTestList = new ArrayList<Employee>(); 
     employeeTestList.add(employee3); 
     employeeTestList.add(employee4); 
     employeeTestList.add(employee5); 

     merge(employeeDataList, employeeTestList); 

    } 

    public static List<Employee> merge(List<Employee> employeeDataList, List<Employee> employeeTestList) { 
     List<Employee> list = new ArrayList<Employee>(); 

     for(Employee emp : employeeTestList) { 
      int lengthOfEmployeeDataList = employeeDataList.size(); 
      int count = 0; 
      for(Employee empData : employeeDataList){ 
       if(emp.getEmpCode() == empData.getEmpCode()) { 
        //EMPLOYEE CODE MATCHES 
        if(!emp.getName().equals(empData.getName())) { 
         //WHEN NAME ARE NOT EQUAL 
         empData.setName(emp.getName()); //NAME IN TEST LIST IS ASSIGNED TO DATALIST 
         list.add(empData); 
         break; 
        } 
        else { 
         list.add(emp); 
         break; 
        } 
       } 
       else if(!(emp.getEmpCode() == empData.getEmpCode()) && count < lengthOfEmployeeDataList){ 
        //ID DOESNT MATCHES 
        count++; 
       } 
       if(count == lengthOfEmployeeDataList){ 
        //ALL THE EMPLOYEE Objects has been Checked and None Matching 
        list.add(emp); 
       } 

      } 
     } 
     for(Employee emp : employeeDataList) { 
      if(!list.contains(emp)) { 
       employeeDataList.remove(emp); 
      } 
     } 
     System.out.println(list); 
     return list; 
    } 


} 
+0

はい、それが働いている...おかげでたくさん –

+0

私は、このためのHashMapを取得すると思ったのHashMapかのLinkedHashMap –

0

Listが唯一の解決策でない場合は、Class HashMapを使用してキーとしてIDを使用することをお勧めします。そのような操作にもっと役立つHashMap APIを使用することができます。 putIfAbsent() https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html

+0

で作業をお勧めします。しかし、teckSpecにはメソッドのリストがあります。リストからPOJO属性を取得する方法はありますか? –

関連する問題