list消除重复数据

面试官:有一个list,有很多重复数据,现在你手写一段代码,重复的数据只留一份。

我:(仔细想了几分钟)双重循环list,内层碰到和外层一样的数据,就remove掉,都循环完了,就去完了。

面试官:这样做不会报啥异常吗?

我:……

面试官:我没啥问题了。回去等通知吧。

回去研究了一下,哦,原来list,remove后,会改变下标,4个元素,删了3,原来的下标4会变成3。按size循环可能会报下标越界。应使用iterator循环删除,可规避remove的风险。

面试官:来个list去重。

我:使用iterator循环删除重复数据。

面试官:是否有更简便方法。

我:……

面试官:回去等通知吧。

list去重真的是坑很多的一题,非常经典,方法很多,最简便方法为把list转化为set,因为set不可能有重复数据。

应系统了解arraylist源码。

你可能感兴趣的:(list消除重复数据)