如何解决如何比较列表中的某个字段并将其值插入另一个列表中?
我有两个列表,第一个是 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 举报,一经查实,本站将立刻删除。