java编程将a,b数组中不同的数字保存到一个新的数组中

如题所述

建立一个临时数组 定义一个length来记录新加入的元素个数 然后把a b 的元素逐个加入到新数组中 加入前先用Arrays.binarySearch 检查新数组中是否已经有该元素 最后返回

以下代码仅供参考

import java.util.Arrays;

public class TestCircle {
public static void main(String args[]) {
int[] a = new int[] { 1, 3, 5, 2, 9, 5 };
int[] b = new int[] { 2, 5, 7, 10, 9, 11 };

int[] temp = addArray(a, b);

System.out.print("[");
for (int i : temp) {
System.out.print(i + " ");
}
System.out.print("]");

}

static int[] addArray(int[] a, int[] b) {
int[] temp = new int[a.length + b.length];
int length = 0;

for (int i : a) {
Arrays.sort(temp);
if (Arrays.binarySearch(temp, i) < 0) {
temp[temp.length - length - 1] = i;
length++;
}

}

for (int i : b) {
Arrays.sort(temp);
if (Arrays.binarySearch(temp, i) < 0) {
temp[temp.length - length - 1] = i;
length++;
}
}

return Arrays.copyOfRange(temp, temp.length - length, temp.length);
}

}

 若你能保证a中的元素都是无重复的话   可以简化成以下

import java.util.Arrays;

public class TestCircle {
public static void main(String args[]) {
int[] a = new int[] { 1, 3, 5, 2, 9 };
int[] b = new int[] { 2, 5, 7, 10, 9, 11 };

Arrays.sort(a);

int[] temp = addArray(a, b);

System.out.print("[");
for (int i : temp) {
System.out.print(i + " ");
}
System.out.print("]");

}

/**
 * 这里a数组必须是有序不重复的
 */
static int[] addArray(int[] a, int[] b) {
int[] temp = Arrays.copyOf(a, a.length + b.length);
int length = a.length;

for (int i : b) {
if (Arrays.binarySearch(a, i) < 0) {
temp[length] = i;
length++;
}
}

return Arrays.copyOf(temp, length);
}

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-17
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;

public class NumDemo {
public static void main(String[] args) {
        int[] ary1 = { 1,2,8,6,8,7 };
int[] ary2 = { 1,-2,7,5,};
HashSet<Integer> set = new HashSet<Integer>();//用于存储数组1和数组2
for (int a : ary1) {
set.add(a);
}
for (int b : ary2) {
set.add(b);
}
for (int i = 0; i < ary1.length; i++) {
int temp = ary1[i];
boolean flag = false;
for (int j = 0; j < ary2.length; j++) {
if (temp == ary2[j]) {
flag = true;//如果有相同元素
}
}
if (flag) {
set.remove(temp);//就从集合里移除
}
}
int[] result = new int[set.size()];//新数组,用于保存不同的元素
Iterator<Integer> it = set.iterator();//迭代器
int index = 0;
while(it.hasNext()){//遍历给数组赋值
result[index] = it.next();
index++;
}
System.out.println(Arrays.toString(result));//输出新数组,
}
}

输出

[-2, 2, 5, 6, 8]

说明, 由于HashSet是无序不重复的保存元素,所以就算同一数组有多个相同数字,也当成一个数字,比如ary1里,2个8,实际只存储一个8.

第2个回答  2017-08-11
public static void main(String[] args) throws Exception {
    int[] arr1 = new int[10];
    int[] arr2 = new int[10];
    Set<Integer> set = new HashSet<Integer>();
    for (int anArr1 : arr1) {
        set.add(anArr1); //把第一个数组的值 全部放入set
    }
    for (int anArr2 : arr2){
        if (! set.remove(anArr2)){ //尝试从set中移除 第二个数组的值
            set.add(anArr2); //如果移除失败 表示set中没有 这个值  放入set里
        };
    }
    List<Integer> list = new ArrayList<Integer>();
    for (Integer integer : set){ //把set的值 转到arr3
        list.add(integer);
    }
    Integer[] arr3 = list.toArray(new Integer[list.size()]);
}


第3个回答  2017-07-18
int[] a;
int[] b;
int[]c;
for(int i = 0 ;i<a.size();i++){
for(int j=0;j<b.size();b++){
if(a[i] == b[j]){
break;
}

c.add(a[i]);

}

}
按照此方式再便利一下b数据即可
第4个回答  2017-08-03
int[] a={1,2,3};
int[] b={4,5,6};
int[] c=new int[a.length+b.length];
for(int i=0;i<c.length;i++){
if(i<3){
c[i]=a[i];
}else{
c[i]=b[i-a.length];
}
}
相似回答