1. 程式人生 > 程式設計 >Java HashSet集合儲存遍歷學生物件程式碼例項

Java HashSet集合儲存遍歷學生物件程式碼例項

Java HashSet集合儲存遍歷學生物件程式碼例項

由於Set集合是不儲存重複元素的,所以在做此案例時,如果我正常新增一個重複元素是什麼結果呢?

public class HashSetDemo {
  public static void main(String[] args) {
    //建立HashSet集合物件
    HashSet<Student> hashSet = new HashSet<Student>();

    //建立學生物件
    Student s1 = new Student("愛學習",21);
    Student s2 = new Student("愛Java",22);
    Student s3 = new Student("堅持不懈",23);

    Student s4 = new Student("愛Java",22);

    //把學生新增到集合
    hashSet.add(s1);
    hashSet.add(s2);
    hashSet.add(s3);
    hashSet.add(s4);

    //遍歷集合(增強for迴圈)
    for (Student s : hashSet) {
      System.out.println(s.getName() + "," + s.getAge());
    }
  }
}

執行結果:

Java HashSet集合儲存遍歷學生物件程式碼例項

通過執行結果,我們發現,重複的元素仍然被新增進去,是什麼原因呢? 根據原始碼分析和HashSet底層資料結構可以知道,如果兩個物件的雜湊值相同(hashCode方法),並且物件的內容也相同(equals方法),是不會儲存在雜湊表的。所以我們需要在被儲存的物件類中重寫hashCode方法和equals方法,來解決添加了重複元素的問題。

在物件類中重寫hashCode方法和equals方法後(自動生成即可)執行上面的程式碼,執行結果:

Java HashSet集合儲存遍歷學生物件程式碼例項

可見,重複的元素未被新增到集合。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。