集合類(數據結構圖、集合圖、集合之間的比較)



數據結構

 

 

 

 

集合類圖

 

 

 



  


.容器中裝的都是對象,因為它要把對象放到堆上面,但是1.5后就可以自動包裝
  map.put("one",new Integer(1))
  1.5后可以 map.put("one",1);

 

 

List

有序的、可重復的、按索引位置排序  (這點類似於數組)

實現類

ArrayList   數組實現

1.      代表長度可變的數組

2.      允許對元素進行快速的隨機訪問(根據索引進行訪問)

3.      向ArrayList中插入和刪除元素的速度較慢,需要移動大量的元素

LinkedList  雙向鏈表實現

1.      插入和刪除元素的速度較快(不需要移動元素)

2.      隨機訪問的速度相對較慢,隨機訪問的含義是根據索引定位特定位置的元素

3.      提供addFirst(0 addLast() getFirst() get拉斯特() removeFirst()和removeLast()方法,使LinkedList可以作為堆棧,隊列和雙向隊列使用

Set

無序的、不可重復的、

實現類

HashSet 哈希算法實現、底層是HashMap實現,用到了key的部分。

1.      按照哈希算法存取集合中的對象,具有很好的存取和查找性能

2.      當向集合中加入一個對象時,Hashset會調用對象的hashCode()方法獲得哈希碼,然后根據哈希碼進一步計算對象在集合中的存放位置

3.      在Java.lang.Object中定義了hashCode()和equals()方法,在最原始的Object中定義的equals()方法是按照內存地址比較對象是否相等,因此對於Object而言,如果equals方法的結果為true,則說明兩個引用實際上引用相同的對象,這兩個引用的哈希碼必然也相同

為保證HashSet能夠正常工作,要求兩個對象用equals()方法比較的結果為true時,他們的哈希碼也相同

如果用戶定義的類覆蓋了Object的equals方法而沒有覆蓋hashCode方法,會導致當equals方法結果為true時,對象的哈希碼並不相同,這樣會使hashSet無法正常工作,用戶本意是作為同一個對象引用處理,但是由於沒有覆蓋hashCode()方法,導致哈希碼不同,hashSet將作為不同對象處理。

 

SortedSet

排序的set

實現類

TreeSet,在HashSet的基礎上維護了一個雙向鏈表,

1.      排序的依據對象實現實現了Comparable接口,或者是構造時傳入Comparator比較器。像Integer,Double和String他們自己都實現了Compareble接口

 

Map

Key 唯一的,key不可重復的。Value可重復。

實現類

HashMap

 

SortedMap

 

TreeSet基於TreeMap實現,支持排序

TreeSet是非線程安全的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM