ArrayList中去除重複資料,以及去除重複的自定義物件
阿新 • • 發佈:2019-02-05
去掉重複資料思路:建立一個新集合,遍歷舊的集合,不包含就新增
private ArrayList getList(List arr) {
List list = new ArrayList();
Iterator it = arr.iterator();
while (it.hasNext()) {
Object obj = (Object) it.next();
if(!list.contains(obj)){ //不包含就新增
list.add(obj);
}
}
return (ArrayList) list;
已經去掉了重複的資料,這個方法用在去掉重複的自定義的物件的時候是不起作用的。
我自定義了一個學生的物件,裡面有name和age屬性。如圖:
問題出現在 contains()。進入原始碼會發現它是用父類object的equals()方法:
所以解決去除重複的自定義物件的時候,需要在自定義的物件中重寫equals方法
再次列印輸出: