java中retainAll和removeAll的区别
时间: 2023-12-28 13:27:29 浏览: 78
Java中,retainAll和removeAll都是集合(Collection)中的方法。
retainAll方法是用于求两个集合的交集,即保留集合中与指定集合相同的元素,而删除其他元素。
removeAll方法是用于求两个集合的差集,即删除集合中与指定集合相同的元素,而保留其他元素。
可以简单的理解为,retainAll方法是保留相同的元素,removeAll方法是删除相同的元素。
举例来说,假设集合A包含元素{1,2,3,4},集合B包含元素{3,4,5,6},那么:
- A.retainAll(B)将会使得集合A变为{3,4},因为3和4是A和B共有的元素。
- A.removeAll(B)将会使得集合A变为{1,2},因为3和4是A和B共有的元素,所以被删除了。
相关问题
removeAll retainAll
这两个方法是在Java中集合框架的接口中定义的。它们用于对集合进行元素操作。
1. `removeAll(Collection<?> c)`方法会从调用它的集合中移除与指定集合(c)中相同的元素。换句话说,它会删除调用它的集合中与指定集合中相同的元素。
2. `retainAll(Collection<?> c)`方法会从调用它的集合中保留与指定集合(c)中相同的元素。换句话说,它会删除调用它的集合中与指定集合中不相同的元素。
这两个方法都返回一个布尔值,表示操作是否改变了调用它的集合。如果有任何元素被删除或保留,则返回`true`;否则返回`false`。
请注意,这两个方法都使用了`Collection<?> c`作为参数,这意味着传入的参数可以是任何实现了`Collection`接口的类的实例,比如`ArrayList`、`HashSet`等。
java里请编程,创建两个HashSet对象,其中保存整数。然后求它们的并集、差集和交集。 提示:利用addAll()、removeAll()、retainAll()方法。
可以按照以下代码实现:
```java
import java.util.HashSet;
public class SetOperation {
public static void main(String[] args) {
HashSet<Integer> set1 = new HashSet<>();
HashSet<Integer> set2 = new HashSet<>();
set1.add(1);
set1.add(2);
set1.add(3);
set1.add(4);
set2.add(3);
set2.add(4);
set2.add(5);
set2.add(6);
// 求并集
HashSet<Integer> unionSet = new HashSet<>(set1);
unionSet.addAll(set2);
System.out.println("并集为:" + unionSet);
// 求差集
HashSet<Integer> diffSet = new HashSet<>(set1);
diffSet.removeAll(set2);
System.out.println("差集为:" + diffSet);
// 求交集
HashSet<Integer> intersectionSet = new HashSet<>(set1);
intersectionSet.retainAll(set2);
System.out.println("交集为:" + intersectionSet);
}
}
```
输出结果为:
```
并集为:[1, 2, 3, 4, 5, 6]
差集为:[1, 2]
交集为:[3, 4]
```
阅读全文