Java HashSet集合儲存遍歷學生物件程式碼例項
阿新 • • 發佈:2020-04-10
由於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()); } } }
執行結果:
通過執行結果,我們發現,重複的元素仍然被新增進去,是什麼原因呢? 根據原始碼分析和HashSet底層資料結構可以知道,如果兩個物件的雜湊值相同(hashCode方法),並且物件的內容也相同(equals方法),是不會儲存在雜湊表的。所以我們需要在被儲存的物件類中重寫hashCode方法和equals方法,來解決添加了重複元素的問題。
在物件類中重寫hashCode方法和equals方法後(自動生成即可)執行上面的程式碼,執行結果:
可見,重複的元素未被新增到集合。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。