首页 > 解决方案 > 使用流取消列表中不匹配条件的元素

问题描述

我有一个像这样的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.

关于如何使用流来做到这一点的任何建议?

标签: javajava-8java-stream

解决方案


推荐阅读