我有以下 for 循环,我需要使用集合流以保持与其他代码的一致性。for (int i = 0; i < res.getAllLists().size(); i++) { if (dataRes.getData().getId().equalsIgnoreCase( String.valueOf(res.getAllLists().get(i).getId()))) { res.getAllLists().remove(i); }}
2 回答
呼如林
TA贡献1798条经验 获得超3个赞
如果你真的需要使用 aStream你可以这样做
res.setAllLists(
res.getAllLists().stream() // convert list to stream
.filter(line -> !dataRes.getData().getId().equalsIgnoreCase(line)) // filter to keep only the non equal items
.collect(Collectors.toList())); // convert back to a list
但是,Lamda Expression onList是一种更简洁的方法,并且避免了引入Stream会带来的性能开销
res.getAllLists().removeIf(list -> dataRes.getData().getId().equalsIgnoreCase(String.valueOf(list.getId())));
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
要有条件地从集合中删除元素,请使用该removeIf(Predicate<? super E> filter)
方法。
请注意,这不使用问题中要求的流处理,而是使用 Lambda 表达式,因此它是较新的 Java 8“功能”语法。
res.getAllLists().removeIf(list -> dataRes.getData().getId().equalsIgnoreCase( String.valueOf(list.getId())));
添加回答
举报
0/150
提交
取消