arraylist - ArrayList 流和删除对象
问题描述
你好我最近开始学习流。我在理解如何使用流从 ArrayList 中删除特定项目时遇到了一些麻烦。
我知道我可以使用这样的行删除特定项目
nameList.removeIf(e ->(e.getName().equals(c.getName))));
我遇到的问题是使用这样的代码来删除项目
nameList.stream()
.filter( e -> (e.getName().equals(c.getName())))
.map(nameList::remove);
我不确定我错过了什么或这段代码做错了什么。任何帮助,将不胜感激。谢谢你。
解决方案
你可以这样做,
List<Element> removedList = nameList.stream().filter(e -> !e.getName().equals(c.getName()))
.collect(Collectors.toList());
这是诀窍。您可以将不匹配的元素收集到不同的列表中,而不是Predicate
从现有元素中删除与给定元素匹配的元素。这种方法符合函数式编程的基本概念,例如不变性。List
Predicate
推荐阅读
- spring-security - 我如何针对来自身份服务器的 SAML 断言授权用户(Wso2is 5.4.0)
- json - 如何处理 Kafka 主题中的 JSON?
- c++ - 比较 c++ 中的 uint8_t 和 uint16_t
- ios - 使用 ffmpeg,函数 av_find_input_format("avfoundation") 返回 null
- java - Selenium 找不到可见的元素
- ios - MultipeerConnectivity MCPeerID 不符合 Codable
- node.js - IISNode 调试器:WebSocket 握手期间出错:意外的响应代码:200
- c++ - C++ / Gstreamer - 使用 gst_buffer_get_reference_timestamp_meta 函数
- model-view-controller - MVC中模型的含义是什么?
- javascript - React Material-UI:通过按钮(在更高级别)打开对话框,createRef 无法使用'withMobileDialog'