java获取两个数据量较大的arraylist的交集、差集以及并集
时间: 2024-01-28 16:03:25 浏览: 66
JAVA获取两个数据量较大的ArrayList的交集、差集以及并集
获取两个数据量较大的 `ArrayList` 的交集、差集以及并集的方法如下:
```java
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
// 添加数据到list1
for (int i = 0; i < 1000000; i++) {
list1.add(i);
}
// 添加数据到list2
for (int i = 500000; i < 1500000; i++) {
list2.add(i);
}
// 交集
List<Integer> intersection = new ArrayList<Integer>(list1);
intersection.retainAll(list2);
// 差集
List<Integer> difference = new ArrayList<Integer>(list1);
difference.removeAll(list2);
// 并集
Set<Integer> unionSet = new HashSet<Integer>(list1);
unionSet.addAll(list2);
List<Integer> union = new ArrayList<Integer>(unionSet);
System.out.println("交集的大小:" + intersection.size());
System.out.println("差集的大小:" + difference.size());
System.out.println("并集的大小:" + union.size());
}
}
```
这里我们使用了 `retainAll` 方法来获取交集,使用了 `removeAll` 方法来获取差集,使用了 `Set` 来获取并集并去除重复元素。注意,使用 `ArrayList` 来获取并集时,需要先将其转换为 `Set`,否则会有重复元素。
阅读全文