list對(duì)象去重復(fù)效率最高 去除list集合中重復(fù)項(xiàng)的幾種方法?
去除list集合中重復(fù)項(xiàng)的幾種方法?一個(gè)對(duì)象怎樣算重復(fù)? 需要自己實(shí)現(xiàn)hashCode()和equals()方法來(lái)申明兩個(gè)對(duì)象‘相等’的判斷條件 最簡(jiǎn)單的就是 一個(gè)或多個(gè)成員變量的值相等(比如id,n
去除list集合中重復(fù)項(xiàng)的幾種方法?
一個(gè)對(duì)象怎樣算重復(fù)? 需要自己實(shí)現(xiàn)hashCode()和equals()方法來(lái)申明兩個(gè)對(duì)象‘相等’的判斷條件 最簡(jiǎn)單的就是 一個(gè)或多個(gè)成員變量的值相等(比如id,name)等,就認(rèn)為這兩個(gè)對(duì)象相等。 在這種情況下,就好辦了 Set set = new HashSet() set.addAll(list) 到這一步,已經(jīng)利用set的特性去重了。 接下來(lái)再把去重后的集合放到一個(gè)新的list去即可 List newlist = new ArrayList() newlist.addAll(set) 去重本身很簡(jiǎn)單。 復(fù)雜在對(duì)‘對(duì)象相等’概念的理解。 默認(rèn)情況下,兩個(gè)對(duì)象在繼承了Object的方法后, 只有當(dāng)堆內(nèi)存地址相等的情況下,才相等。 所以,必須要自己重寫(xiě)equals和hashCode