ArrayList1 = [a,b,c,d]
ArrayList1 = [d,c,e,f,g]
我想将结果作为
ArrayListFinal = [c,d]
我该如何做到这一点?
答案 0 :(得分:1)
试试这个...........
for(int i =0;i<list1.size();i++){
for(int j=0;j<list2.size();j++){
if(list.get(j).equals(list2.get(i))){
listfinal.add(list.get(i));
}
}
}
for(int i=0;i<listfinal.size();i++){
System.out.println(list1.get(i));
}
答案 1 :(得分:1)
你的问题是找到两个数组A和B的交叉点(表示为∩)。
假设数组未排序。最简单的方法是逐个比较元素,如下所示:
function getIntersect(arr1, arr2) {
var temp = [];
for(var i = 0; i < arr1.length; i++){
for(var k = 0; k < arr2.length; k++){
if(arr1[i] == arr2[k]){
temp.push( arr1[i]);
break;
}
}
}
return temp;
}
但是如果arr2比arr1短得多,你可以使用哈希表加速:
function getIntersect(arr1, arr2) {
var r = [], o = {}, l = arr2.length, i, v;
for (i = 0; i < l; i++) {
o[arr2[i]] = true;
}
l = arr1.length;
for (i = 0; i < l; i++) {
v = arr1[i];
if (v in o) {
r.push(v);
}
}
return r;
}