你好我有两个循环遍历列表并使用switch设置name属性,但我想重构并使用流而不知道如何去做:
这是代码段
for (ClaimDTO claimDTO: claimDTOs) {
for (CategoryDTO categoryDTO : claimDTO.getCategories()) {
switch (categoryDTO.getCategoryType()) {
case "ALLOWANCE": {
categoryDTO.setName("Flight");
break;
}
case "MILEAGE": {
categoryDTO.setyName("Car");
break;
}
default:
categoryDTO.setName("Expenses");
}
}
}
我应该创建解析名称的功能,只是在流中使用它,或者它甚至不值得,也不会保存LOC。
答案 0 :(得分:1)
您可以使用flatMap在单个流中获取所有类别dtos:
claimDTOs.stream()
.flatMap(claim -> claim.getCategories().stream())
.forEachOrdered(this::setName);
forEachOrdered然后获取为每个元素执行的Consumer,并且可以作为方法引用(双冒号)引用。
private void setName(CategoryDTO categoryDTO) {
switch (categoryDTO.getCategoryType()) {
case "ALLOWANCE": {
categoryDTO.setName("Flight");
break;
}
case "MILEAGE": {
categoryDTO.setName("Car");
break;
}
default:
categoryDTO.setName("Expenses");
}
}