java中有数组a{1,2,3,4}和数组b{3,4,5},现在需要对b数组进行更新同步。

业务规则如下:1、a数组有的数字b数组必须有,没有则添加。2、b数组有的数字,若a数组没有,需要从b数组中删除。3、不能直接把a数组的值直接给b的,需要判断比较。求合适的... 业务规则如下:1、a数组有的数字b数组必须有,没有则添加。2、b数组有的数字,若a数组没有,需要从b数组中删除。3、不能直接把a数组的值直接给b的,需要判断比较。求合适的方法? 展开
 我来答
永远丹笑
2013-04-15 · TA获得超过192个赞
知道答主
回答量:130
采纳率:100%
帮助的人:113万
展开全部
给你我的思路吧,我大概有三种方案,但三种方案的前提是数字不重复,我想这点是必须的
一、做最简单的遍历,也就是应用二重循环对a遍历,并在a遍历方法内遍历b然后逐条比较如果没有就加入一个,不过因为是数据不能随便添加最终你还是要重新new一个数组
这种做法的坏处就是两次循环相当于笛卡尔积,遍历内容过多,如果数据太大就不建议这种方案了
二、由于你用java来遍历,所以可以把b中的数据放入一个List集合里面,遍历a应用list的contain方法,如果存在就不加入,如果不存在就加入到list里面,最后再把list转换为数字
这种做法可能应用到其他类,所以在算法上不受自己控制
三、自己写一个算法,我的思路是首先对b数组排序,然后遍历a数组,并在a数组中通过折半查找b中是否存在a的元素,如果不存在就添加

以上不知道能否满足你。
http_p
2013-04-15 · TA获得超过1095个赞
知道小有建树答主
回答量:733
采纳率:100%
帮助的人:587万
展开全部

按你的要求, 最后b中的元素肯定和a中的元素相同, 但是你又不允许直接把a中的元素赋给b中

下面的代码可以实现, 你自己看吧, 有注释


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {
/**
* @param args
*/
private List<Integer> asList(int[] i) {
List<Integer> list = new ArrayList<Integer>();
for (int t : i) {
list.add(t);
}
return list;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t = new Test();
int[] a = { 1, 2, 3, 4};
int[] b = { 3, 4, 5 };
List<Integer> listA = t.asList(a);
List<Integer> listB = t.asList(b);
for (int i : listA) {//遍历a, 对于a中每个元素
if(!listB.contains(i)){//如果b中没有, 添加到b中
listB.add(i);
}
}
for(Iterator<Integer> it = listB.iterator(); it.hasNext();){//遍历b中的每个元素
int i = it.next();
if(!listA.contains(i)){//如果a中没有, 从b中删除
it.remove();
}
}

System.out.println("a : " + listA);
System.out.println("b : " + listB);
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2a51f6b
2013-04-15 · 超过14用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:48.8万
展开全部
就是将a中的元素赋值给b数组,只不过多了判断比较而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式