首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java ArrayList 去除重複元素完整指南:字串與自訂物件處理

     編輯:Java 相關知識

方法一:使用新集合 + Iterator 去重 (適用於字串、基本型別包裝類)

public static ArrayList getSingle(ArrayList list) {
    ArrayList tempList = new ArrayList();
    Iterator it = list.iterator();
    while (it.hasNext()) {
        Object obj = it.next();
        if (!tempList.contains(obj)) {
            tempList.add(obj);
        }
    }
    return tempList;
}

原理:遍歷舊集合,若新集合不包含該元素則加入。contains 底層依賴 equals 方法,String、Integer 等已正確覆寫 equals,故可直接使用。

方法二:自訂物件去重 (必須覆寫 equals 方法)

public class Person {
    private String name;
    private int age;
    // 建構子、getter/setter 略

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (!(obj instanceof Person)) return false;
        Person p = (Person) obj;
        return this.name.equals(p.name) && this.age == p.age;
    }
    // 建議同時覆寫 hashCode
}

測試:

ArrayList list = new ArrayList();
list.add(new Person("張三", 23));
list.add(new Person("張三", 23));
list.add(new Person("李四", 24));
ArrayList newList = getSingle(list); // 重複的「張三,23」會被移除

注意事項

  • contains、remove 皆依賴 equals,未覆寫時比較的是記憶體位址,無法正確去重。
  • 若需高效能大量資料去重,建議使用 HashSet 或 Java 8 Stream distinct()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved