日期:2014-05-19  浏览次数:20827 次

两个数组找相同元素
现有 数组A  与  数组B 
两个数组中都放的是对象O, 对象O有id 与 name 两个属性,判断两个O是否为同一个对象,根据属性name来判断。
要求:通过高效的算法,找出A、B中相同的对象,并输出相互对应的id , 如:
1 - 4
2 - 3 
5 - 6 

------解决方案--------------------
import java.io.IOException;
public class Test1 {

/**
 * @param args
 * @throws IOException 
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p1=new Person();
p1.setName("zhangsan");

Person p2=new Person();
p2.setName("zhangsan");

Person[] o1={p1};
Person[] o2={p2};
for(int i=0;i<o1.length;i++){
for(int j=0;j<o2.length;j++){
if(o1[i].getName().equals(o2[j].getName())){
System.out.println("相等的对象在两个数组中分别的下标为:"+i+":"+j);
}
}
}


}

}

------解决方案--------------------
重写equal和hashcode方法,使用Array.sort();就可以啦
------解决方案--------------------
重写equal和hashcode方法,使用Array.sort();就可以啦 
------解决方案--------------------
最高效的方法应该是对一个数组中的元素建立哈希表,然后遍历另一个数组的元素吧
------解决方案--------------------
引用:
最高效的方法应该是对一个数组中的元素建立哈希表,然后遍历另一个数组的元素吧

要看数据的规模了。。。