java不用HashSet取两个int数组的交集和异或集
时间: 2024-02-21 12:59:16 浏览: 22
除了使用HashSet,还有其他方法可以取两个int数组的交集和异或集。其中,最简单的方法是通过双重循环遍历两个数组,逐一比较每个元素是否相等。这种方法的时间复杂度为O(n^2),不如使用HashSet的O(n)快,但是它不需要额外的空间来存储Set对象,可以在空间有限的情况下使用。
对于两个int数组A和B的交集,我们可以使用如下代码:
```java
int[] A = {1, 2, 3};
int[] B = {2, 3, 4};
List<Integer> intersectionList = new ArrayList<>();
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < B.length; j++) {
if (A[i] == B[j]) {
intersectionList.add(A[i]);
break;
}
}
}
int[] intersection = intersectionList.stream().mapToInt(Integer::intValue).toArray();
```
对于两个int数组A和B的异或集,我们可以使用如下代码:
```java
int[] A = {1, 2, 3};
int[] B = {2, 3, 4};
List<Integer> xorList = new ArrayList<>();
for (int i = 0; i < A.length; i++) {
boolean found = false;
for (int j = 0; j < B.length; j++) {
if (A[i] == B[j]) {
found = true;
break;
}
}
if (!found) {
xorList.add(A[i]);
}
}
for (int i = 0; i < B.length; i++) {
boolean found = false;
for (int j = 0; j < A.length; j++) {
if (B[i] == A[j]) {
found = true;
break;
}
}
if (!found) {
xorList.add(B[i]);
}
}
int[] xorSet = xorList.stream().mapToInt(Integer::intValue).toArray();
```
这段代码首先遍历数组A,对于数组A中的每个元素,如果它没有出现在数组B中,则将其添加到异或集中。接着遍历数组B,对于数组B中的每个元素,如果它没有出现在数组A中,则将其添加到异或集中。最后,将异或集转换为int数组即可。