首页 > 解决方案 > 如何在迭代和检查对象的另一个 ArrayList 时将实体值更新为 ArrayList 中的对象

问题描述

我遇到的情况是,我正在遍历对象的 ArrayList 并根据条件将该 ArrayList 的值添加到另一个 ArrayList 中(如果它们为空)。现在我想更新 ArrayList 的特定实体的值,其中我正在添加来自另一个 ArrayList 的值。让我也发布代码并解释一下

这是我存储值的目标实体

public class DestDO{
private String id;
private String name;
private String phase;
private String attr;
private String isComplete;

这是我从中获取值的 Source 实体

public class SourceDO{
private String id;
private String name;
private String phase;
private String attr;

这是我设置值的类

public class DataInjectService{

 public List<SourceDO> addAllValues(){

  List<SourceDO> addedListValues = Arrays.asList(

  new SourceDO("1","Jeet","KI","D"),
  new SourceDO("1","John","KA","E"),
  new SourceDO("1","HARRY","KU","R")
);
return addedListValues 

这是驱动类

public class TestArrayList{
 public static void main(String a[]){
 DataInjectService dataInjectService = new DataInjectService ();
 List<SourceDO> listOfSourceObj = 
 System.out.println(mapSourceToDest(listofSourceObj);
}

在此操作中,如果任何 sourceDO 值为 null,那么我必须将 false 设置为 isComplete 实体,否则我 sourceDO 包含所有值,然后我必须将 true 设置为 isComplete 实体。更准确地说,sourceDO.getName() 为空那么即使 sourceDO 的其他值不为空,我也必须将 false 设置为 isComplete 实体。这可能吗 ?

public static List<DestDO> mapSourceToDest(List<SourceDO> listOfSourceObj){
 List<DestDO> desiredResult = new ArrayList<>();
 for(SourceDO sourceDo : listOfSourceDO){
  desiredResult.add(DestDO.builder()
   .id(Optional.ofNullable(sourceDO.getId()).orElse(""))
   .name(Optional.ofNullable(sourceDO.getName()).orElse(""))
   .phase(Optional.ofNullable(sourceDO.getPhase()).orElse(""))
   .attr(Optional.ofNullable(sourceDO.getAttr()).orElse(""))
   .isComplete(// here i have to change the status 

我正在尝试一种适合此操作的 Java 8 方法,如果可能,请帮助我

标签: javaarraylistjava-8

解决方案


你必须检查你的属性,有很多方法,我建议使用:

private static boolean verifyAnyNull(SourceDO sourceDo) {
    return Arrays.asList(
            sourceDo.getId(),
            sourceDo.getName(),
            sourceDo.getPhase(),
            sourceDo.getAttr()
    ).contains(null);
}

然后调用你的方法:

.isComplete(verifyAnyNull(sourceDo))

我假设 complete 是一个布尔值而不是字符串


推荐阅读