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

drkbr07n  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(342)

我先有两张单子 List<ClassOne> 第二个呢 List<ClassTwo> . classone具有以下字段:
一级:

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

Class2有以下字段:

@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());
}

我如何比较这两个列表?

iqjalb3h

iqjalb3h1#

我建议收集 List<ClassTwo> 进入 Map<String,Integer> 哪个是 Map(fieldToCompare, idToInsert) 为了获得更好的性能

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

现在就用 forEachclassListOne ```
classListOne.forEach(one -> one.setidToInsert(classTwoMap.getOrDefault(one.getFieldTocompare(),one.getIdToInsert())));

相关问题