如何比较两组数据---在线等 功能描述:我有两组数据,如何找出他们的不相同的数据,并把不相同的数据提取出来,数据里存的是对像。请各路高手指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把一组数据读到一个Set,然后从第二组数据里读,set1 有的话就remove,没有的就add,最后剩下的就是所有不同的数据了;如果要分开放,就分开add,然后set1里剩下的是一组,set2里是一组;或者排序,然后遍历还有,就是两组数据本身有没有重复。如果有重复,排序后比较要简单些 java集合类里有求差集的方法。A和B求差,B再对A求差然后两个结果集求并 ArrayList a = new ArrayList(); ArrayList b = new ArrayList(); a.add("1"); a.add("3"); a.add("2"); b.add("4"); b.add("3"); b.add("2"); HashSet hs = new HashSet(); hs.addAll(a); ArrayList c = (ArrayList) b.clone(); c.removeAll(hs); System.out.println("B组与A组不同的元素为:"+c.toString()); b.removeAll(c); System.out.println("B组与A组相同的元素为:"+b.toString()); a.removeAll(b); System.out.println("A组与B组不同的元素为:"+a.toString()); 将2组数据先存入一个对象数组中,对象必须实现equals方法。然后循环该数组,对每个数组元素进行计数,生成一个对象计数的MAP。最后将该MAP中计数为1的元素取出,就是2组中不同的数据。前提条件2组数据中本身不能存在重复的元素。时间复杂度O(N) public static void main(String[] args) { List<String> listA = new ArrayList<String>(); listA.add("AA"); listA.add("BB"); List<String> listB = new ArrayList<String>(); listB.add("BB"); listB.add("CC"); listA.removeAll(listB); listA.addAll(listB); for(String str:listA){ System.out.println(str); } }结果AA BB CC listA.removeAll(listB); <== listA里的BB被移走了, listA.addAll(listB); <== 但是ListB的BB还在,listB又没变过, BB就又加进来了应该把B里面A的元素也remove,这样可能需要clone一下或者ListB的元素本身就是一个一个比较过才add 正解,如果是LZ的要求需要copy或者clone一个原始的listA结果应该是AA, CC 寻!以为会JNI的朋友帮忙啊~!! java如何实现远程执行dos命令? 在java中如何得到美国等地区的时间 求简单算法合并列值(只能用SQL语句)。 关于applet 的问题? 求各位帮忙 解决一下!!! 如何测试一个socket连接是否仍然有效? 哪里有mssql7.0的jdbc驱动,微软上面只找到2000的,没7.0 ? 请问什么是“银弹”? 请教一个菜鸟问题 执行executeQuery()直接导致程序结束后续代码不执行了,为什么? 有cognos方面的api吗?
A和B求差,B再对A求差
然后两个结果集求并
ArrayList a = new ArrayList();
ArrayList b = new ArrayList();
a.add("1");
a.add("3");
a.add("2");
b.add("4");
b.add("3");
b.add("2");
HashSet hs = new HashSet();
hs.addAll(a);
ArrayList c = (ArrayList) b.clone();
c.removeAll(hs);
System.out.println("B组与A组不同的元素为:"+c.toString());
b.removeAll(c);
System.out.println("B组与A组相同的元素为:"+b.toString());
a.removeAll(b);
System.out.println("A组与B组不同的元素为:"+a.toString());
时间复杂度O(N)
public static void main(String[] args) {
List<String> listA = new ArrayList<String>();
listA.add("AA");
listA.add("BB");
List<String> listB = new ArrayList<String>();
listB.add("BB");
listB.add("CC");
listA.removeAll(listB);
listA.addAll(listB);
for(String str:listA){
System.out.println(str);
} }
结果
AA BB CC
listA.removeAll(listB); <== listA里的BB被移走了,
listA.addAll(listB); <== 但是ListB的BB还在,listB又没变过, BB就又加进来了应该把B里面A的元素也remove,这样可能需要clone一下
或者ListB的元素本身就是一个一个比较过才add
正解,如果是LZ的要求需要copy或者clone一个原始的listA
结果应该是
AA, CC