Java中retainAll保留交集用法详解
作者:WeekendFlower
时间:2025-12-11
浏览:0
retainAll方法用于保留集合交集,修改原集合并返回是否发生改变;示例中list1.retainAll(list2)后仅保留"b","c";需注意其破坏性,建议使用Set提升性能,避免空集合或null值影响逻辑,可通过复制集合防止原数据被修改。
retainAll方法用于保留集合交集,修改原集合并返回是否发生改变;示例中list1.retainAll(list2)后仅保留"b","c";需注意其破坏性,建议使用Set提升性能,避免空集合或null值影响逻辑,可通过复制集合防止原数据被修改。

在Java中,retainAll 方法用于保留当前集合与另一个集合的交集元素,换句话说,它会从当前集合中删除所有不在指定集合中的元素。这个方法常用于求两个集合的交集。
retainAll 方法的基本语法
boolean retainAll(Collection> c)该方法修改调用它的集合,只保留同时存在于参数集合 c 中的元素。如果集合发生了修改,返回 true,否则返回 false。
使用步骤和示例
以下是如何使用 retainAll 获取两个集合交集的完整示例:
1. 创建两个集合并添加元素
例如,我们有两个 List 或 Set:
List2. 调用 retainAll 方法
执行后,list1 将只保留与 list2 共有的元素:
list1.retainAll(list2); System.out.println(list1); // 输出: [b, c]此时 list1 中只剩下 "b" 和 "c",因为这两个是两个列表的交集。
注意事项
- 原集合会被修改:retainAll 是一个破坏性操作,会直接修改调用它的集合。如果不想改变原集合,应先复制一份。
- 建议使用 Set 提高性能:Set 的查找效率高于 List,尤其是在数据量大时。可以将集合转为 HashSet 再操作。
- 空集合处理:如果任一集合为空,结果必为空。
- null 值支持:List 允许 null,Set(非 Concurrent)通常也允许,但需注意空值是否影响逻辑。
避免修改原集合的写法:
List适用场景
- 筛选共同用户、权限、标签等
- 数据比对或去除非共有的配置项
- 集合运算中的交集需求
基本上就这些。只要理解 retainAll 会“保留共有的、删掉独有的”,就能正确使用它来获取交集。注意备份原数据,避免意外修改。
作者最新文章
赤友清理大师
2026-09-16 17:43
南邮光擎智算团队:GaN基Micro-LED光计算芯片从理论到流片的突破
2026-09-08 18:35
多张照片怎么合成PDF文件?三种图片转PDF工具怎么选?
2026-09-03 17:04
Excel转PDF防乱版指南:在线与本地双方案及排版检查
2026-09-03 10:04
多个PDF怎么合并成一个?合并后顺序怎么检查?
2026-09-02 19:54
上一篇:
财富新机遇,财源滚滚而来
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多

































