retainAll方法用于保留集合交集,修改原集合并返回是否发生改变;示例中list1.retainAll(list2)后仅保留”b”,”c”;需注意其破坏性,建议使用Set提升性能,避免空集合或null值影响逻辑,可通过复制集合防止原数据被修改。

在Java中,retainAll 方法用于保留当前集合与另一个集合的交集元素,换句话说,它会从当前集合中删除所有不在指定集合中的元素。这个方法常用于求两个集合的交集。
retainAll 方法的基本语法
boolean retainAll(Collection> c)
该方法修改调用它的集合,只保留同时存在于参数集合 c 中的元素。如果集合发生了修改,返回 true,否则返回 false。
使用步骤和示例
以下是如何使用 retainAll 获取两个集合交集的完整示例:
1. 创建两个集合并添加元素
立即学习“Java免费学习笔记(深入)”;
例如,我们有两个 List 或 Set:
List list1 = new ArrayList(Arrays.asList(“a”, “b”, “c”, “d”)); List list2 = new ArrayList(Arrays.asList(“b”, “c”, “e”, “f”));
2. 调用 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 result = new ArrayList(list1); result.retainAll(list2); // list1 不变,result 是交集
适用场景
筛选共同用户、权限、标签等 数据比对或去除非共有的配置项 集合运算中的交集需求
基本上就这些。只要理解 retainAll 会“保留共有的、删掉独有的”,就能正确使用它来获取交集。注意备份原数据,避免意外修改。
以上就是如何在Java中使用retainAll保留交集的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/67956.html
微信扫一扫
支付宝扫一扫