我有两个列表 firstList<ClassOne>
和 second List<ClassTwo>
。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;
}
我有这两个 ListsList<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())));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句