我希望在发送到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和medicalInfoId设为空。
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();
}
}
使用流功能执行此操作时,对象值仍未清除。
假设对象MedicalSignsSymptomVO的medicalSignsSymptomId为3, 我需要给它赋空值。同样适用于medicalInfoId。
我可以知道如何使用流功能而不是使用foreach功能来完成此操作。
答案 0 :(得分:0)
不确定要做什么,但基本上,以下内容是“ 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());
我在这里使用了一套,似乎更合逻辑。
不一定是好的样式,因为要在流中合并太多内容以进行更好的维护。在这里:更改元素并返回新列表。
答案 1 :(得分:0)
如果要将对象发送到UI,则可能不需要手动将值设置为null。
如果您使用的是Jackson,则可以在对对象进行序列化/反序列化时简单地将JSONIgnore
放在忽略字段中。
例如
@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;
}
如果您需要将其他字段序列化,则可以使用@Joop Eggen的答案中所述的forEach方法。