4 回答

TA貢獻(xiàn)8條經(jīng)驗(yàn) 獲得超5個(gè)贊
你可重寫 equals和hashCode,邏輯如下,如果實(shí)例中姓名相同 那么 hashcode 相同,然后把實(shí)例集合往set容器里放,如果實(shí)例中 姓名有相同的 那么hashcode相同 那么set容器就會(huì)用當(dāng)前實(shí)例覆蓋之前的hashcode一樣的實(shí)例。

TA貢獻(xiàn)41條經(jīng)驗(yàn) 獲得超38個(gè)贊
你的問(wèn)題有點(diǎn)問(wèn)題,先向你確認(rèn)一下,
1、你有一個(gè)叫person的類
2、你創(chuàng)建了多個(gè)這個(gè)類的實(shí)例
3、其中實(shí)例中有name成員是相同的
解決方法:
第一種:從根源上解決,就是你在實(shí)例化的時(shí)候,不允許存在相同姓名相同的實(shí)例。如果存在就替換原來(lái)的或者不允許實(shí)例化
第二種:就你描述的解決,你描述的內(nèi)容是說(shuō)已經(jīng)實(shí)例出來(lái)了多個(gè)姓名相同的實(shí)例,那么就要確定依據(jù)什么條件去去掉相同的實(shí)例,例如說(shuō):名字為“小明”,年齡大于100歲的去掉。再例如:信息完全相同的去掉(這個(gè)更符合實(shí)際)。
看你是需要那個(gè),到時(shí)候我可以寫個(gè)簡(jiǎn)單的例子給你。

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊
創(chuàng)建一個(gè)ArrayList集合;
把實(shí)例依次添加到集合里,在添加的時(shí)候?qū)线M(jìn)行遍歷,遍歷集合時(shí),判斷name屬性是否重復(fù),重復(fù)則不添加;
最后集合里的對(duì)象就是去重的了。
添加回答
舉報(bào)