日期:2014-05-20  浏览次数:20686 次

ArrayList去重复问题
一个对象E的ArrayList<E>,长度比较大,百万级,要根据对象E的的两个元素a,b去重复,也就是当(a1==a2)&&(b1==b2)时判定为重复,也可能有第三个元素,怎么写速度快?

------解决方案--------------------
引用:
对象E的的两个元素是什么意思


对象E的两个成员变量的意思。
放入HashSet里面,重写equals方法。
我感觉这个就没有算法可言了,既然是list,就只能遍历一遍了。。把每一个元素都放入set里面,重的自然就没了

------解决方案--------------------
引用:
Quote: 引用:

对象E的的两个元素是什么意思


对象E的两个成员变量的意思。
放入HashSet里面,重写equals方法。
我感觉这个就没有算法可言了,既然是list,就只能遍历一遍了。。把每一个元素都放入set里面,重的自然就没了

和我的想法一样,不过应该还得重写hashCode方法,貌似Set是借助Map,利用Map中Key的唯一性,来保证不出现重复值。
------解决方案--------------------
如果您要是用这种判定,可以用while循环或者是Map,while循环速度比较快,map可以确保key唯一。