创建一个方法,该方法使用2个给定的数组返回一个新的数组,其中包含来自a和b的元素,没有重复:



大家好,我是一个初学者,我正在尝试做这个问题,以下是我迄今为止尝试过的。。。我真的很困惑:

编写一个名为int〔〕arrayUnion(int〔〕a,int〔〕b(的方法,在给定两个int数组的情况下,返回一个具有a和b中唯一元素的新数组。没有重复!

输出示例:arrayUnion([1,2,3],[-1,0,1](返回[1,2,3,1,0]

arrayUnion([1,1,1],[1,1,1](返回[1]

public static int[] arrayUnion(int[] a, int[] b){
int[] result;
for(int i =0; i< a.length; i++){
for(int k =0; k<result.length; k++){
if(a[i]!= result[k]){
result.add(a[i]);
}
}
}

for(int j =0; j< b.length; j++){
for(int k =0; k<result.length; k++){
if(b[j]!=result[k]){
result.add(b[j]);
}
}
}
return result;
}

您可以使用流来实现这一点,合并两个数组,只保留单个数组的不同值。

int[] a = { 1, 2, 3, 2, 7, 4, 5 };
int[] b = { 2, 9, 4, 5, 5 };
int[] union = arrayUnion(a,b);
System.out.println(Arrays.toString(union));

打印

[1, 2, 3, 4, 5, 7, 9]   

这是的作品

  • 将两个阵列平坦化为Intstream
  • 消除重复
  • 以及转换回CCD_ 2
static int[] arrayUnion(int[] a, int[] b) {
return Stream.of(a,b).flatMapToInt(IntStream::of)
.distinct()
.toArray();
}

如果您可以使用Java Collections,您可以使用Set获得唯一的整数数组:

public static int[] arrayUnion(int[] a, int[] b){
HashSet<Integer> set=new HashSet();
for(int i =0; i< a.length; i++){
set.add(a[i]);  
}
for(int i =0; i< b.length; i++){
set.add(b[i]);  
}
int n = s.size(); 
int[] result; = new String[n]; 

int j = 0;
for(Integer i: set) {
result[j++] = i;
}
return result;
}

首先,不能对数组使用add方法。因此,您的代码可能如下所示:

public int[] arrayUnion(int[] a, int[] b) {
List<Integer> result = new ArrayList<>();
for (int value: a) {
if (!result.contains(value)) {
result.add(value);
}
}
for (int value: b) {
if (!result.contains(value)) {
result.add(value);
}
}
return result.stream().mapToInt(Integer::intValue).toArray();
}

其次,有了一套就容易一点了。因此,您可以轻松地添加所有值并返回数组:

public int[] arrayUnion(int[] a, int[] b) {
Set<Integer> result = new HashSet<>();
for (int value: a) {
result.add(value);
}
for (int value: b) {
result.add(value);
}
return result.stream().mapToInt(Integer::intValue).toArray();
}

还有第三种选择。您可以将Java Stream API与flatMap:一起使用

public int[] arrayUnion(int[] a, int[] b) {
return Stream.of(a, b).flatMapToInt(IntStream::of).distinct().toArray();
}

最新更新