在學習類集之前,先明確乙個概念,那就是啥叫重量級,啥叫輕量級。在學習框架或容器時,常常會有人說這個容器是重量級的,這個容器是輕量級的,現在就對重量級和輕量級做乙個解釋。
重量級還是輕量級主要看它應用了多少服務。使用服務越多,對系統資源的占用也越多,負載越大,必然會影響到應用發布時間和執行效能。對於乙個容器而言,它提供了很多的服務,但預設對應用不是開啟的,應用需要某種服務,必須指明使用該服務,則應用只涉及該容器的核心服務,則把這種非入侵式的容器稱為輕量級容器。相反,應用在用該容器時,你必須使用該容器給你提供的所有功能,這種入侵式的容器稱為重量級容器。
1、 類集合的總體結構圖
從總體圖上我們可以看到,collection包括list,set兩個子介面。而list的子介面的實現有arraylist、linkedlist和vector。set子介面的實現為hashset,它的子介面還包括sortedset。
map介面包括hashmap和hashtable兩個實現和sortedmap乙個子介面,sortedmap子介面的實現為treemap。
下面就幾個介面或實現的區別做詳細的解釋,而此區別也是學習集合的重點:
(1)list、set和map的區別
1、list中儲存的元素物件是有序的,且允許重複。
2、set中儲存的元素物件是無序的雜湊的且不允許重複,後乙個相同元素會覆蓋前乙個相同元素的物件。
3、map是乙個由key和value組成的鍵值對。
(2)arraylist和linkedlist,arraylist和vector的區別
arraylist和linkedlist區別
linkedlist的底層實現是雙向迴圈列表,所以對於增加刪除操作具有很高的效力。適合用來實現stack和queue資料結構。
arraylist底層實現為陣列,所以對於查詢遍歷具有很高的效力,在實際開發中應用較多。
arraylist和vector區別和聯絡
相同點:底層實現都是陣列,可以通過下標訪問。
不同點:vector是線性安全的,屬於重量級容器。
arraylist不是線性安全的,屬於輕量級容器。
(3)hashmap和hashtable的區別
hashmap是非線性安全的,輕量級容器,它允許空的鍵值對,它還可以儲存null的鍵值對。
hashtable是線性安全的,重量級容器,它不允許空的鍵值對,它不能儲存null的鍵值對。
解釋:在hashmap中,null可以作為鍵,這樣的鍵只有乙個;可以有乙個或多個鍵所對應的值為null。而hashtable不可以。
(4)hashset和hashmap
hashset是乙個特殊的hsahmap,它是通過組合hashmap實現的,它把所有存放的物件作為key,而value為null。所以set是特殊的map。
(5)sortedset是有序的set,它的實現是treeset,而sortedmap是有序的map,它的實現是treemap。treeset是通過treemap實現的乙個sortedset的實現。treemap是通過紅黑二叉樹實現的。
注意:集合在迴圈獲取值時,都會遇到iterator,迴圈時建議優先考慮iterator
java的類集詳解
在學習類集之前,先明確乙個概念,那就是啥叫重量級,啥叫輕量級。在學習框架或容器時,常常會有人說這個容器是重量級的,這個容器是輕量級的,現在就對重量級和輕量級做乙個解釋。重量級還是輕量級主要看它應用了多少服務。使用服務越多,對系統資源的占用也越多,負載越大,必然會影響到應用發布時間和執行效能。對於乙個...
java類集簡介
類集框架介面的具體特點 序號介面描述 1collection 是存放一組單值的最大父介面,所謂的單值是指集合中的每乙個元素都是乙個物件,在新的開發標準中已經很少直接用此介面進行操作了。2list 是collection介面的子介面,也是最常用的介面,此介面對collection介面進行了大量的擴充,...
Java 類集框架
主要方法 add 增加資料 clear 清空資料 contains 是否包含某個資料 isempty 是否為空 remove 移除某個資料 size 獲取集合中的資料個數 toarray 轉換為物件陣列 iterator 例項化父介面iterator 物件陣列使用remove 和contains 時...