使用java8更改列表中的值
我想要一个值在发送到UI之前被清空使用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 {
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;
}