- 此问题已存在**:
Java Stream : Iterate through each element , apply condition and and generate output [closed]
2天前关闭。
我需要迭代下面XML中的每个标记,在检查一些条件之后,我需要生成一个输出XML
输入XML:
<NameList>
<Name>
<Name>test1</Name>
<nameType>
<set>nameType</set>
<entry>set3</entry>
</nameType>
</Name>
<Name>
<Name>test2</Name>
<nameType>
<set>nameType</set>
<entry>set4</entry>
</nameType>
</Name>
<NameList>
需要在输入XML中应用条件:
- 如果entry == set3,则添加标记
- 如果entry == set4,则将整个标签设置为空
输出XML将如下所示:
<NameList>
<Name>
<Name>test1</Name>
<nameType>
<set>nameType</set>
<entry>set3</entry>
<date>2022-03-03</date>
</nameType>
</Name>
<NameList>
实施代码:
nameList.stream()
.forEach(name -> {
if(name.getNameType().getEntry().equals("set3")) {
name.setDate(date);
}
if (name.getNameType().getEntry().equals("set4")) {
name.setName(null);
name.setDate(null);
........
}
}
使用上面的代码,它将null设置为name object,并得到如下输出
<NameList/>
1条答案
按热度按时间cld4siwp1#
您不能(安全地)使用
.forEach
从集合中移除元素,当然也不能使用它从流中移除元素。(不完全正确:流或多或少是只读的)。相反,您希望
filter
您的流:第二条语句可以再次替换为过滤流,以改变基础集合,使其更简洁: