java set介面

來源:互聯網
上載者:User

標籤:分享圖片   建立   info   png   位置   object   cal   對象   自己的   

 

、

 

 

 

Hashset集合是set介面的子類

底層是一個雜湊表,不能儲存重複的元素,通過hashcode方法和equals方法來保證資料的唯一性。取出資料時,不能保證資料的順序和存入資料的順序一致

hashcode方法用來比較2個元素的雜湊值,如果雜湊值一樣,就調用equals方法,比較元素的內容是否一樣

什麼是雜湊表呢? 

雜湊表底層使用的也是數組機制,數組中也存放對象,而這些對象往數組中存放時的位置比較特殊,當需要把這些對象給數組中存放時,那麼會根據這些對象的特有資料結合相應的演算法,計算出這個對象在數組中的位置,然後把這個對象存放在數組中。而這樣的數組就稱為雜湊數組,即就是雜湊表。

當雜湊值一樣的時候,內容不一樣的時候就會儲存在同雜湊值鏈表的下面。

 

1 public static void method01(){2         HashSet<String> set =new HashSet<String>();3         set.add("abc");4         set.add("abc");5         System.out.println(set);6     }

HashSet儲存自訂元素

給HashSet中存放自訂類型元素時,需要重寫對象中的hashCode和equals方法,建立自己的比較方式,才能保證HashSet集合中的對象唯一

 

1 public static void method03(){2         HashSet<Person> set =new HashSet<Person>();3         set.add(new Person("a",20));4         set.add(new Person("b",30));5         set.add(new Person("c",40));6         for(Iterator it =set.iterator();it.hasNext();){7             System.out.println(it.next());8         }9     }
 1 package com.orcale.demo01; 2  3 public class Person { 4     private String name; 5     private  int age; 6     public Person(){}; 7     public Person(String name, int age) { 8         this.name = name; 9         this.age = age;10     }11     public String getName() {12         return name;13     }14     public void setName(String name) {15         this.name = name;16     }17     public int getAge() {18         return age;19     }20     public void setAge(int age) {21         this.age = age;22     }23     public String toString() {24         return "Person [name=" + name + ", age=" + age + "]";25     }26     public boolean equals(Object obj) {   //重寫equals方法,先判斷這2個的值是否一樣,再判斷這個值是不是空的,
                            如果都不是就判斷這個值是不是Person類,因為是obj類父類,所有要向下轉型,然後判斷值是否一樣
27 if(this==obj){28 return true;29 }30 if(obj==null){31 return false;32 }33 if(obj instanceof Person){34 Person p=(Person) obj;35 return name.equals(p.name)&&age==p.age;36 }37 return false;38 }39 40 public int hashCode() {41 final int prime = 31;42 int result = 1;43 result = prime * result + age;44 result = prime * result + ((name == null) ? 0 : name.hashCode());45 return result;46 }47 }

LinkedHashSet集合是HashSet集合的子類,他取出資料的順序和存入資料的順序是一致的,資料也是唯一性

1 public static void method05(){2         LinkedHashSet<Integer> set=new LinkedHashSet<Integer>();3         set.add(1);4         set.add(2);5         set.add(3);6         for(Integer i:set){7             System.out.println(i);8         }9     }

 

 

 

 

 

 

 

 

 

 

 

 

 

java set介面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.