java - 使用流取消列表中不匹配条件的元素
问题描述
我有一个像这样的POJO,
class Val {
private String name;
private String value;
}
现在我有一个List<Val> values
. 我正在尝试从中获取values
具有名称"ABC"
的所有元素,以便列表中没有匹配名称的元素应该为空。
例如:
List<Val> values = [Val(name=ABC,value=val1), Val(name=DEF,value=val2), Val(name=ABC,value=val3), Val(name=ABC,value=val4)]
values.stream().filter(x -> x.getName().equals("ABC")).collect(); //this will filter out the matching elements. This I know.
//Expected Output. Not sure how to do this.
List<Val> valuesOut = [Val(name=ABC,value=val1), null, Val(name=ABC,value=val3), Val(name=ABC,value=val4)]
输入和输出列表的大小保持不变。只有名称不是 ABC 的元素才会变成null
.
关于如何使用流来做到这一点的任何建议?