如何在java中高效地比较两个大型数组列表
所以我有两个大的数组列表,分别是500k和900k大小的对象,我想创建第三个列表(c),列出B中A的所有DUP 所以我一直在做如何在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>
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意味着从列表中删除指定集合中不包含的所有元素