Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java8更改列表中的值_Java_Java 8 - Fatal编程技术网

使用java8更改列表中的值

使用java8更改列表中的值,java,java-8,Java,Java 8,我想要一个值在发送到UI之前被清空 public class MedicalInfoVO { private Integer medicalDeoId; private List<MedicalCoverageVO> medicalCoverages; private List<MedicalSignsSymptomVO> medicalSignsSymptoms; } public class MedicalSignsSymptomVO {

我想要一个值在发送到UI之前被清空

public class MedicalInfoVO {
    private Integer medicalDeoId;
    private List<MedicalCoverageVO> medicalCoverages;
    private List<MedicalSignsSymptomVO> medicalSignsSymptoms;
}

public class MedicalSignsSymptomVO {
    private Integer medicalSignsSymptomId;
    private Integer symptomId;
    private String symptomType;
    private Integer medicalInfoId;
    private Integer diagnosisId;
   private String diagnosisValue;
}
在发送回服务调用之前,我需要将medicalSignsSymptomId和MedicalInfo设置为null

medicalInfoVO = retrieveMedicalInfoDetails(authorizationId, claimId);
if(null ==medicalInfoVO || null == medicalInfoVO.getMedicalDeoId()){
    medicalInfoVO = retrieveMedicalInfoDetails(authorizationId, null);
    medicalInfoVO.setClaimId(claimId);
    medicalInfoVO.setMedicalDeoId(null);
    if(CollectionUtils.isNotEmpty(medicalInfoVO.getMedicalSignsSymptoms())) {
        List<Integer> medicalSignsSymptomIdList = medicalInfoVO.getMedicalSignsSymptoms().stream()
                .map(map -> map.getMedicalSignsSymptomId()).collect(Collectors.toList());
        medicalSignsSymptomIdList.clear();
        List<Integer> medicalInfoIdList = medicalInfoVO.getMedicalSignsSymptoms().stream()
                .map(map -> map.getMedicalInfoId()).collect(Collectors.toList());
        medicalInfoIdList.clear();
    }
}
当我使用流功能时,对象值仍然没有被清除

假设obejct MedicalSignsSymptomVO的medicalSignsSymptomId为3, 我需要给它赋值null。medicalInfoId也是如此


我可以知道如何使用流功能而不是使用foreach功能来完成此操作。

不确定您想要做什么,但基本上以下是streamy:

    medicalInfoVO.getMedicalSignsSymptoms().forEach(mSSymptoms -> {
            mSSymptoms.setMedicalSignsSymptomId(null);
            mSSymptoms.setMedicalInfoId(null);
    });
可以将其组合如下:

    Set<Integer> medicalSignsSymptomIdList = medicalInfoVO.getMedicalSignsSymptoms().stream()
            .map(mSSymptoms -> {
                Integer id = mSSymptoms.getMedicalSignsSymptomId();
                mSSymptoms.setMedicalSignsSymptomId(null);
                mSSymptoms.setMedicalInfoId(null);
                return id;
            }) 
            .collect(Collectors.toSet());
我在这里用了一套,这似乎更符合逻辑


不一定是好的风格,要把太多的东西组合在一起,以便更好的维护。此处:更改元素并返回新列表。

如果要将对象发送到UI,可能不需要手动将值设置为null。 若您使用的是Jackson,那个么当对象被序列化/反序列化时,您可以简单地将JSONIgnore设置为忽略字段。 e、 g


如果您需要在其他地方序列化这些字段,则可以使用forEach方法,如的答案所述。

您正在清除局部变量列表medicalSignsSymptomIdList和MedicalFoidList,而不是medicalInfoVO中的列表,您可能打算这样做。@vlumi您能帮助我如何更改上述流功能吗?您的要求显然与您所写的内容相矛盾。我需要给它赋值null。意味着您需要更改特定对象的字段,而不是从列表中删除该对象是的right@bharathi请展示您对foreach功能的看法谢谢您的帮助。至少你明白我的问题
@JsonIgnoreProperties(ignoreUnknown = true)
public class MedicalSignsSymptomVO {
    @JSONIgnore
    private Integer medicalSignsSymptomId;
    private Integer symptomId;
    private String symptomType;
    private Integer medicalInfoId;
    private Integer diagnosisId;
   private String diagnosisValue;
}