java 求数组中的交集
时间: 2023-08-31 17:19:21 浏览: 123
### 回答1:
在 Java 中,可以使用集合来求两个数组的交集。
首先,将两个数组转换为集合,可以使用 Arrays.asList() 方法。然后,可以使用 Collection 类的 retainAll() 方法来计算两个集合的交集。 retainAll() 方法会修改调用它的集合,使其只包含与传递给它的集合中都存在的元素。
例如,假设你有两个数组,分别为 int[] arr1 和 int[] arr2,你可以这样计算它们的交集:
```
List<Integer> list1 = Arrays.asList(ArrayUtils.toObject(arr1));
List<Integer> list2 = Arrays.asList(ArrayUtils.toObject(arr2));
list1.retainAll(list2);
int[] intersection = ArrayUtils.toPrimitive(list1.toArray(new Integer[0]));
```
注意,上面的代码使用了 Apache Commons Lang 库中的 ArrayUtils 工具类来将数组转换为集合,并将集合转换回数组。如果你不想使用这个库,也可以手动实现这个转换。
最后,交集的结果存储在 int[] intersection 中。
### 回答2:
可以使用HashSet来求解数组中的交集。
首先,我们可以创建一个HashSet去存储第一个数组中的元素。接着,我们遍历第二个数组,判断每个元素是否在HashSet中存在。如果存在,我们将该元素存储到另一个HashSet中,这个HashSet就是我们想要的交集。
以下是一个示例代码:
```
import java.util.Arrays;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {4, 5, 6, 7, 8};
HashSet<Integer> set1 = new HashSet<>();
HashSet<Integer> intersect = new HashSet<>();
for (int num : arr1) {
set1.add(num);
}
for (int num : arr2) {
if (set1.contains(num)) {
intersect.add(num);
}
}
System.out.println("数组的交集:" + intersect.toString());
}
}
```
运行以上代码,输出结果为:
```
数组的交集:[4, 5]
```
通过这种方法,我们可以轻松地找到两个数组的交集。
### 回答3:
要求实现一个Java函数,该函数可以找到两个给定数组的交集元素。
可以使用HashSet来解决这个问题。首先,创建一个HashSet来存储第一个数组中的所有元素。然后,遍历第二个数组,对于每个元素,检查它是否在HashSet中出现过。
如果一个元素在HashSet中出现过,那么它是两个数组的交集元素之一。因此,将该元素添加到一个结果集合中,以便最后返回。
以下是一个示例实现:
```java
import java.util.HashSet;
import java.util.Set;
public class ArrayIntersection {
public static int[] findIntersection(int[] nums1, int[] nums2) {
Set<Integer> set = new HashSet<>();
Set<Integer> intersection = new HashSet<>();
for (int num : nums1) {
set.add(num);
}
for (int num : nums2) {
if (set.contains(num)) {
intersection.add(num);
}
}
int[] result = new int[intersection.size()];
int index = 0;
for (int num : intersection) {
result[index++] = num;
}
return result;
}
public static void main(String[] args) {
int[] nums1 = {1, 2, 2, 1};
int[] nums2 = {2, 2};
int[] intersection = findIntersection(nums1, nums2);
// 输出交集元素
for (int num : intersection) {
System.out.print(num + " ");
}
}
}
```
在上面的示例中,我们使用HashSet将数组`nums1`中的元素存储在集合中。然后,遍历数组`nums2`,并检查每个元素在HashSet中是否存在。如果存在,将其添加到结果集合`intersection`中。
最后,我们将结果集合转换为一个整型数组,并将其返回。在main函数中,我们使用示例数组调用`findIntersection`函数,并输出结果。
以上代码输出为:`2`,表示两个数组的交集元素为`2`。
阅读全文