Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 我想在两个不同的arraylist中收集公共元素_Arrays - Fatal编程技术网

Arrays 我想在两个不同的arraylist中收集公共元素

Arrays 我想在两个不同的arraylist中收集公共元素,arrays,Arrays,我想知道结果 ArrayList1 = [a,b,c,d] ArrayList1 = [d,c,e,f,g] 我怎样才能做到这一点?试试这个 ArrayListFinal = [c,d] 您的问题是找到表示为的交点∩ 由两个数组A和B组成 假设数组未排序。最简单的方法是逐个比较元素,如下所示: for(int i =0;i<list1.size();i++){ for(int j=0;j<list2.size();j++){ if(list.get(j).

我想知道结果

ArrayList1 = [a,b,c,d]
ArrayList1 = [d,c,e,f,g]
我怎样才能做到这一点?

试试这个

ArrayListFinal = [c,d]

您的问题是找到表示为的交点∩ 由两个数组A和B组成

假设数组未排序。最简单的方法是逐个比较元素,如下所示:

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));
}
但是,如果arr2比arr1短得多,您可以使用哈希表来加速:

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;
}

你能告诉我们为什么你的代码不工作吗?你有两个ArrayList 1
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;
}