如题:集合去重removeAll是少不了的,set效率吊打list,有重复集业务没关系,removeAll()里面用set总没错吧。
Set<Integer> set1 = new HashSet();
Set<Integer> set2 = new HashSet();
List<Integer> list1 = new ArrayList();
List<Integer> list2 = new ArrayList();
for(int i=0;i<100000;i++){
set1.add(i);
set2.add(i+50000);
list1.add(i);
list2.add(i+50000);
}
System.out.println(new Date());
set1.removeAll(set2);
System.out.println(new Date());
list1.removeAll(set2);
System.out.println(new Date());
set1.removeAll(list2);
System.out.println(new Date());
list1.removeAll(list2);
System.out.println(new Date());
运行结果如下图:
原因有空再说。
顺便提一句:
mybatis 返回得List是arraylist,可以getClass().getName()一下。
源码里面没有set接口,所以一般自己将list转set就可以了,这个效率很快,100w的几秒就好了。