java编程将a,b数组中不同的数字保存到一个新的数组中
5个回答
展开全部
建立一个临时数组 定义一个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);
}
}
展开全部
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.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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()]);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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数据即可
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数据即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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];
}
}
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];
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询