retainAll方法用于保留两个集合的交集并修改原集合,返回是否发生修改。示例中list1.retainAll(list2)后仅保留共同元素3、4;Set操作同理,需注意元素的equals实现、null检查及List重复元素处理,使用时应先复制集合以保留原始数据。

在Java中,retainAll 方法用于保留当前集合与另一个集合的交集元素,即:只保留同时存在于两个集合中的元素。调用该方法后,原集合会被修改。
retainAll 基本语法
boolean retainAll(Collection> c)
该方法从调用集合中移除所有不在参数集合 c 中的元素。执行后,集合仅包含交集部分。如果集合发生修改,返回 true,否则返回 false。
使用示例:List 保留交集
假设我们有两个 List 集合,想让第一个集合只保留和第二个集合共有的元素:
List list1 = new ArrayList(Arrays.asList(1, 2, 3, 4));List list2 = new ArrayList(Arrays.asList(3, 4, 5, 6));list1.retainAll(list2);System.out.println(list1); // 输出 [3, 4]
执行后,list1 被修改为仅包含 3 和 4,这两个元素是两个列表的交集。
立即学习“Java免费学习笔记(深入)”;
使用 Set 进行高效交集操作
Set 天然去重,适合做交集运算。例如:
Set set1 = new HashSet(Arrays.asList(“a”, “b”, “c”));Set set2 = new HashSet(Arrays.asList(“b”, “c”, “d”));set1.retainAll(set2);System.out.println(set1); // 输出 [b, c]
结果中只保留了共同存在的元素。注意:HashSet 不保证顺序,如需有序可用 LinkedHashSet。
注意事项
retainAll 会直接修改原集合,如需保留原始数据,应先复制集合。 集合中的元素类型需正确实现 equals 方法,否则比较可能出错。 传入的集合不能为 null,否则抛出 NullPointerException。 对于 List,重复元素可能影响结果。retainAll 会根据实际存在情况保留匹配项。
基本上就这些。retainAll 是求交集的便捷方式,适用于 List、Set 等常见集合类型,理解其修改原集合的特性很重要。
以上就是Java中如何使用retainAll保留集合交集元素的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/195054.html
微信扫一扫
支付宝扫一扫