Java retainAll 方法
1. 简介
retainAll
方法是 Java 集合框架中的一个方法,用于将一个集合中的元素与另一个集合中的元素进行比较,并保留相同的元素,删除不同的元素。
该方法是 Collection
接口的默认方法,可以被实现了 Collection
接口的类直接调用。retainAll
方法会修改原有集合,将不符合条件的元素去除。
retainAll
方法的语法如下:
boolean retainAll(Collection<?> c)
其中,c
是另一个集合,表示需要与原有集合进行比较的集合。
2. 示例代码
import java.util.ArrayList;
import java.util.List;
public class RetainAllExample {
public static void main(String[] args) {
// 创建两个集合
List<String> list1 = new ArrayList<>();
list1.add("apple");
list1.add("banana");
list1.add("orange");
list1.add("grape");
List<String> list2 = new ArrayList<>();
list2.add("apple");
list2.add("kiwi");
list2.add("banana");
// 使用 retainAll 方法比较两个集合
boolean result = list1.retainAll(list2);
// 输出结果
System.out.println("原始集合: " + list1);
System.out.println("是否有修改: " + result);
}
}
3. 代码运行结果
原始集合: [apple, banana]
是否有修改: true
4. 解析
在上面的示例代码中,首先创建了两个 ArrayList
类型的集合 list1
和 list2
,并为两个集合分别添加了一些元素。
然后,调用 list1
的 retainAll
方法,将 list2
作为参数传入。该方法会比较 list1
和 list2
中的元素,并将不在 list2
中的元素从 list1
中删除。
最后,通过输出语句打印了 list1
的内容和 retainAll
方法的返回值。
在本例中,list1
中的元素是 “apple”, “banana”, “orange”, “grape”,list2
中的元素是 “apple”, “kiwi”, “banana”。
由于 list1
和 list2
中的共同元素是 “apple” 和 “banana”,所以 list1.retainAll(list2)
方法会将不在 list2
中的元素 “orange” 和 “grape” 从 list1
中删除。
最后,list1
的内容变为了只包含 “apple” 和 “banana” 的集合。
5. 注意事项
retainAll
方法会修改原有集合,删除不符合条件的元素。因此,在使用retainAll
方法之前,应该确保原有集合是可修改的。retainAll
方法默认使用元素的equals
方法进行比较。如果要比较自定义对象的话,需要在自定义对象中重写equals
方法。
6. 总结
retainAll
方法是 Java 集合框架中的一个实用方法,可以用于比较两个集合并保留相同的元素。