Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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
如何在java中高效地比较两个大型数组列表_Java_Arraylist - Fatal编程技术网

如何在java中高效地比较两个大型数组列表

如何在java中高效地比较两个大型数组列表,java,arraylist,Java,Arraylist,所以我有两个大的数组列表,分别是500k和900k大小的对象,我想创建第三个列表(c),列出B中A的所有DUP 所以我一直在做 for(obj as:B) { if(!A.contains(as.getA())) { C.add(as); } } 但这需要相当长的时间来处理。地图或布景会更快吗?还有其他建议吗?谢谢。使用HashSetcollection List<MyClass>

所以我有两个大的数组列表,分别是500k和900k大小的对象,我想创建第三个列表(c),列出B中A的所有DUP

所以我一直在做

    for(obj as:B)
    {

        if(!A.contains(as.getA()))
        {
            C.add(as);
        }

    }

但这需要相当长的时间来处理。地图或布景会更快吗?还有其他建议吗?谢谢。

使用
HashSet
collection

List<MyClass> myList = new ArrayList<MyClass>();
myList.addAll(listA);
myList.addAll(listB);

Set<MyClass> mySet = new HashSet<MyClass>(myList);
List myList=new ArrayList();
myList.addAll(listA);
myList.addAll(listB);
Set mySet=newhashset(myList);

如果它们是可排序的,请先对它们进行排序,然后使用二进制搜索(请参见Collections类)。如果您可以处理将它们放入
集合的开销,请通过@Kushan查看答案。由于需要重复项,因此应使用
myList.retainal(listB)
?retainal意味着从列表中删除指定集合中不包含的所有元素