2个数组比较

caijia 2010-06-22 03:19:11
数组a["1","2","3"]
数组b["2","3","5"]
怎么最高效率的找出a在b里没有的数组结果,以及b在a里没有的数组结果
结果应该是数组c["1"]和d["5"]
...全文
307 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxt12300 2010-06-23
  • 打赏
  • 举报
回复
用那些较复杂的对象Arrays、HashTable能够实现,
可那是最简单的方法吗?
我看还不如自己循环比较呢。
zqfddqr 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 valen_jia 的回复:]
2楼方法有弊端吧?
假如有重复的,就出来2个

至于速度上,我觉得只要不是循环去比,都挺快的
[/Quote]

这的确是个问题
zqfddqr 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dr_lou 的回复:]
Java code
package com.xuz.csdn.worldcup.day11;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class ArrayCompare {

public static void main(String[] arg……
[/Quote]
我顶
岁月之梦 2010-06-23
  • 打赏
  • 举报
回复
把数组里的值当map的键 存起来 然后根据键到数组取值,取得到的就是存在的 取不到自然不存在!
水中影子 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 dragonisgod 的回复:]

向2L,7L学习了
[/Quote]
dragonisgod 2010-06-22
  • 打赏
  • 举报
回复
向2L,7L学习了
lishigui 2010-06-22
  • 打赏
  • 举报
回复
import java.util.HashMap;
public class test {
public static void main(String[] args) {
HashMap map = new HashMap();
String a[] = {"1","2","3"};
String b[] = {"2","3","5"};
for(int i = 0; i < a.length; i++){
map.put(a[i], "");
}
for(int i = 0; i < b.length; i++){
if(map.get(b[i]) == null){
map.put(b[i], "");
}else{
map.remove(b[i]);
}
}
//结果输出:
Object[] object = map.keySet().toArray();
for(int i = 0; i < object.length; i++){
System.out.println(object[i]);
}
}

}

这个代码是我想出来的,提供参考,但是不知效率如何??
wj63558595 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dr_lou 的回复:]

Java code
package com.xuz.csdn.worldcup.day11;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class ArrayCompare {

public static void main(String[] args) {
……
[/Quote]

和我想法一样
高亮 2010-06-22
  • 打赏
  • 举报
回复
2楼的思想很好,可以自己手工实现,提高效率。


数组a["1","2","3"]
数组b["2","3","5"]
结果数组c[]
结果数组d[]
先初始化c和a一样,d和b一样。
d["2","3","5"]
从数组c中依次取元素,然后在数组d中找到一样的就删除掉,考虑重复,同时在c中删除。没找到就保留,找完后两个数组里剩下的都是对方数组里没有的
sun0322 2010-06-22
  • 打赏
  • 举报
回复
学习这个方法了!!

l1.removeAll(l2);


[Quote=引用 2 楼 goldenfish1919 的回复:]


public static void main(String[]args)
{
String a[]= {"1","2","3"};
String b[]={"2","3","5"};
List l1=new ArrayList(Arrays.asList(a));
List l2=new ArrayList(Arrays.asList(b));
List l3=new ArrayList(Arrays.asList(a));
List l4=new ArrayList(Arrays.asList(b));
l1.removeAll(l2);
System.out.println(l1);
l4.removeAll(l3);
System.out.println(l4);
}
[/Quote]
valen_jia 2010-06-22
  • 打赏
  • 举报
回复
2楼方法有弊端吧?
假如有重复的,就出来2个

至于速度上,我觉得只要不是循环去比,都挺快的
ronniegxq 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 goldenfish1919 的回复:]

Java code

public static void main(String[]args)
{
String a[]= {"1","2","3"};
String b[]={"2","3","5"};
List l1=new ArrayList(Arrays.asList(a));
List l2=new ArrayList(Arrays.asLi……
[/Quote]

dr_lou 2010-06-22
  • 打赏
  • 举报
回复
package com.xuz.csdn.worldcup.day11;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class ArrayCompare {

public static void main(String[] args) {
String[] s1 = {"1","2","3"};
String[] s2 = {"4","2","3"};
Set<String> set = new HashSet<String>();
set.addAll(Arrays.asList(s1));
set.addAll(Arrays.asList(s2));
System.out.println(set); //合集

Set<String> set2 = new HashSet<String>();
set2.addAll(Arrays.asList(s1));
set2.retainAll(Arrays.asList(s2));
System.out.println(set2); //交集

Set<String> set3 = new HashSet<String>();
set3.addAll(Arrays.asList(s1));
set3.removeAll(Arrays.asList(s2));
System.out.println(set3); //补集
}

}


API还慢?
opqxziu 2010-06-22
  • 打赏
  • 举报
回复
用 API 的速度很慢
zuoguodang 2010-06-22
  • 打赏
  • 举报
回复
自己循环比较去吧
wve 2010-06-22
  • 打赏
  • 举报
回复
学习学习
closewbq 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 goldenfish1919 的回复:]
Java code

public static void main(String[]args)
{
String a[]= {"1","2","3"};
String b[]={"2","3","5"};
List l1=new ArrayList(Arrays.asList(a));
List l2=new ArrayList(Arrays……
[/Quote]
顶吧!
若鱼1919 2010-06-22
  • 打赏
  • 举报
回复

public static void main(String[]args)
{
String a[]= {"1","2","3"};
String b[]={"2","3","5"};
List l1=new ArrayList(Arrays.asList(a));
List l2=new ArrayList(Arrays.asList(b));
List l3=new ArrayList(Arrays.asList(a));
List l4=new ArrayList(Arrays.asList(b));
l1.removeAll(l2);
System.out.println(l1);
l4.removeAll(l3);
System.out.println(l4);
}
caijia 2010-06-22
  • 打赏
  • 举报
回复
自己顶哈

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧