微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何比较列表中的某个字段并将其值插入另一个列表中?

如何解决如何比较列表中的某个字段并将其值插入另一个列表中?

我有两个列表,第一个List<ClassOne>,第二个是 List<Classtwo>。 ClassOne 具有以下字段:

ClassOne:

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
public class ClassOne {
    private Integer idToInsert;
    private String fieldToCompare;
    private List<AnotherClass> anotherClass;
}

Classtwo 有以下字段:

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
public class Classtwo {

    private Integer idToInsert;
    private String fieldToCompare;

}

我有这两个列表 List<ClassOne>List<Classtwo>Classtwo 包含 idToInsert 字段,当两个类中的 ClassOne 字段相同时,该字段必须插入到 fieldToCompare 中。

类似的东西

if(classtwo.getFieldToCompare.equals(classOne.getFieldTocompare){
  classOne.setIdToInsert(classtwo.getIdToInsert());
}

如何比较这两个列表?

解决方法

我建议将 List<ClassTwo> 收集到 Map<String,Integer> 中,这是 Map(fieldToCompare,idToInsert) 以获得更好的性能

Map<String,Integer> classTwoMap = classTwoList.stream()
                    .collect(Collectors.toMap(two->two.getFieldToCompare(),two->two.getIdToInsert()));

然后现在只需在 forEach

上使用 classListOne
classListOne.forEach(one -> one.setidToInsert(classTwoMap.getOrDefault(one.getFieldTocompare(),one.getIdToInsert())));
   

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。