java集合 :set 學習

來源:互聯網
上載者:User

標籤:

Set集合


 1.HashSet
  只去重複, 沒有順序
  HashSet的add方法會調用hashCode和equals, 所以儲存在HashSet中的對象需要重寫這兩個方法.


 2.TreeSet
  去重複, 並且可以按照某種順序排序
  TreeSet的add方法會將對象轉為Comparable, 然後調用compareTo方法, 所以儲存在TreeSet中的對象必須實現Comparable, 重寫compareTo方法


 3.LinkedHashSet
  HashSet的子類, 去重複, 並且保留儲存順序


 4.迭代方式
  使用迭代器Iterator
  使用增強for迴圈 

 

 HashSet原理:
  
  /*
 * 如果我們希望一個集合有去重複的功能, 可以在它的add方法中檢查要添加的對象在集合中是否存在. 
 * 迭代集合中每個元素, 和要添加的比較, 如果相同, 就不存.
 * 
 * 如果使用上述方法, 當集合元素特別多的時候, 效率會很低.

 *例如: 集合中有1萬個元素, 當儲存下一個的時候, 需要和前面1萬個都比較, 效率較低.
 * 
 * HashSet的工作原理:
 *   每次儲存物件的時候, 調用對象的hashCode()方法, 計算一個雜湊值. 在集合中尋找是否包含雜湊值相同的元素.
 *    如果沒有雜湊值相同元素, 直接存入.
 *    如果有雜湊值相同的元素, 逐個使用equals()方法比較.
 *     比較結果全為false就存入.
 *     如果比較結果有true則不存.
 * 
 * 如何將自訂類對象存入HashSet進行去重複
 *   類中必須重寫hashCode()方法和equals()方法
 *   equals()方法中比較所有屬性
 *   hashCode()方法要保證屬性相同的對象傳回值相同, 屬性不同的對象盡量不同

    網上找到詳細介紹: http://zhangshixi.iteye.com/blog/673143

   TreeSet原理:
   
   
   /*
 * TreeSet儲存物件的時候, 可以排序, 但是需要指定排序的演算法
 * 
 * Integer能排序(有預設順序), String能排序(有預設順序), 自訂的類儲存的時候出現異常(沒有順序)
 * 
 * 如果想把自訂類的對象存入TreeSet進行排序, 那麼必須實現Comparable介面
 *   在類上implement Comparable
 *   重寫compareTo()方法
 *   在方法內定義比較演算法, 根據大小關係, 返回正數負數或零
 *   在使用TreeSet儲存物件的時候, add()方法內部就會自動調用compareTo()方法進行比較, 根據比較結果使用二叉樹形式進行儲存

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.