gpt4 book ai didi

java - 检查两个 int 数组是否有重复元素,并从中提取重复元素之一

转载 作者:行者123 更新时间:2023-12-03 11:17:57 24 4
gpt4 key购买 nike

我正在尝试编写一个方法,union(),它将返回一个 int 数组,它需要两个 int 数组参数并检查它们是否已设置,或者换句话说,它们之间是否存在重复项。我写了另一种方法,isSet(),它接受一个数组参数并检查数组是否是一个集合。问题是我想检查 union 方法中的两个数组之间是否有重复项,如果有,我想提取其中一个重复项并将其放入 unionArray[] int 数组中。这是我到目前为止所尝试的。

public int[] union(int[] array1, int[] array2){

int count = 0;
if (isSet(array1) && isSet(array2)){
for (int i = 0; i < array1.length; i++){
for (int j = 0; j < array2.length; j++){
if (array1[i] == array2[j]){
System.out.println(array2[j]);
count ++;
}
}
}
}
int[] array3 = new int[array2.length - count];

int[] unionArray = new int[array1.length + array3.length];
int elementOfUnion = 0;

for (int i = 0; i< array1.length; i++){
unionArray[i] = array1[i];
elementOfUnion = i + 1 ;
}
int index = 0;
for (int i = elementOfUnion; i < unionArray.length; i++){
unionArray[i] = array3[index];
index++;
}


return unionArray;
}


public boolean isSet(int[] array){
boolean duplicates = true;

for (int i = 0; i < array.length; i++){
for(int n = i+1; n < array.length; n++){
if (array[i] == array[n])
duplicates = false;
}
}

return duplicates;
}
我试图做的是使用 unionArray 中的所有 array1 元素,检查 array2 是否与 array1 有任何重复,然后将所有非重复元素从 array2 移动到新的 array3,并将 array3 连接到 unionArray。

最佳答案

使用 Java 的流可以使这变得非常简单:

public int[] union(int[] array1, int[] array2) {
return Stream.of(array1, array2).flatMapToInt(Arrays::stream).distinct().toArray();
}

关于java - 检查两个 int 数组是否有重复元素,并从中提取重复元素之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65054208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com