沒有積分了,所以只能設定這一些了
我有一個對像aa 里面有三個屬性 name1,name2,name3,age,sex
LIST<aa> temp=new array();
這個temp里面有1千條資料
我現在想做的就是,如果有二條記錄:name1,name2,name3是一樣,就認為是重復資料,我要取出來
現在不能用java 8的steam,有什么高效邏輯處理方式嗎?
這種1000*1000的回圈是不是有一點低了
uj5u.com熱心網友回復:
把name那幾個欄位拼接當成HashMap的key,判斷是不是存在key,應該回圈一遍可以出來uj5u.com熱心網友回復:
這個果斷用stream啊,直接 temp.stream.filter(aa::name1.equals(aa::name2)&&aa::name3.equals(aa::name2))..collect(Collectors.toList());uj5u.com熱心網友回復:
原來我也是用的steam,又快又省代碼最后服務器上面jdk沒有1.8,不能用這個
現在只能換寫法。
哎。
uj5u.com熱心網友回復:
重寫 aa hashCode equals ,list轉Set,再轉回listuj5u.com熱心網友回復:
把list轉set,然后再轉回list即可,set會自動去重uj5u.com熱心網友回復:
是的,一遍就可以uj5u.com熱心網友回復:
4樓正解,試試就知道了uj5u.com熱心網友回復:
你的需求是過濾掉重復的元素,還是取出重復的元素?如果是過濾掉,直接用Set, 不要用list,
如果是取出就要用下面的邏輯
把arraylist 里面的元素按照name1,name2,name3的順序排序,然后遍歷,如果第二個元素的nam1,name2,name3 等于上一個元素的值,就把他加到新的set 里面,最后回傳這個新的set.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/265205.html
標籤:Web 開發
