在Java中将匹配字段从一个对象列表复制到另一对象列表

时间:2019-10-22 11:37:18

标签: java arraylist

嗨,我有两个对象列表。 List1和list2

App1中的员工列表

list1 
[id=1, name=Thomas, country=null], 
[id=2, name=Smith, country=null], 
[id=3, name=james, country=null], 
[id=4, name=arun, country=null]]

GuestEmployee

list2
[id=3, name=null, country=JAPAN, address=abc], 
[id=2, name=null, country=USA, address=def], 
[id=4, name=null, country=ENGLAND, address=hij]]

list1具有名称详细信息,list2具有国家/地区详细信息。 如何将ID与清单1相同的对象从清单2的国家/地区复制到清单1。

在sql中,我们可以很容易地通过ID列进行连接。但是这里要点击单独的API来读取list2。

我可以从list2创建地图,并以EmpId作为键,并继续从地图获取对象并将详细信息设置为list1。

想知道是否有更好的方法可以做到这一点。

基本上,我必须循环两次才能将数据放入list1。

循环1创建Map,循环2复制文件。

3 个答案:

答案 0 :(得分:0)

  1. 为您的实体创建类
  2. 为源数据列表创建映射HashMap<Integer, YourClass> map;。使用ID字段值作为地图中的键。
  3. 为目标数据创建List<YourClass> list;
  4. 循环访问目标列表,并使用get的map方法快速获取带有该Id的实体的国家/地区
for (YourClass item : list) {
   item.setCountry(map.get(item.getId()));
}

答案 1 :(得分:0)

您应该迭代两个列表并检查ID是否相等。

如果要将list2国家/地区复制到list1对象,请执行以下操作

for (Employee e1: list1){
 for (Employee e2: list2){
   if (e1.getId()==e2.getId()) { //if its a String do .equals()
      e1.setCountry(e2.getCountry();
   }
 }
}

答案 2 :(得分:0)

for(Employee employee : list1){
  for(Employee employee2 : list2) {
    if(employee.getId() == employee2.getId()){
      employee.setCountry(employee2.getCountry());
      break;
    }
  }
}

短: 您从列表1中提取每个员工,从列表2中搜索具有相同ID的员工,并设置匹配的县。