【问题标题】:Copying matching fields from one object list to another object list in java在java中将匹配字段从一个对象列表复制到另一个对象列表
【发布时间】:2019-10-22 11:37:18
【问题描述】:

您好,我有两个对象列表。列表 1 和列表 2

来自 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]]

来宾员工

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 与 list1 相同的对应对象,如何将国家/地区从 list2 复制到 list1。

在 sql 中,我们可以很容易地通过 ID 列加入并执行此操作。但这里我点击单独的 API 来读取 list2。

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

想知道有没有更好的方法来做到这一点。

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

Loop1 创建 Map,loop2 复制文件。

【问题讨论】:

  • 您可以使用第二个列表创建Map<Id, Countr>,然后在创建的地图上执行get 时迭代第一个列表的元素以创建完整的对象。

标签: java arraylist


【解决方案1】:
  1. 为您的实体创建类
  2. 为源数据列表创建映射HashMap<Integer, YourClass> map;。使用 Id 字段值作为映射中的键。
  3. 为目标数据创建List<YourClass> list;
  4. 迭代你的 dest 项目列表并使用get 映射方法快速获取带有Id 的实体的国家/地区
for (YourClass item : list) {
   item.setCountry(map.get(item.getId()));
}

【讨论】:

    【解决方案2】:

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

    如果要将 list2 Country 复制到 list1 对象,请执行以下操作

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

    【讨论】:

      【解决方案3】:
      for(Employee employee : list1){
        for(Employee employee2 : list2) {
          if(employee.getId() == employee2.getId()){
            employee.setCountry(employee2.getCountry());
            break;
          }
        }
      }
      

      短: 您从 list1 中获取每个员工,从 list2 中搜索具有相同 id 的员工,如果匹配,则设置县。

      【讨论】:

      • Ioannis Barakos 快了 30 秒。 XD
      猜你喜欢
      • 1970-01-01
      • 2013-02-02
      • 2015-11-28
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多