Java集合簡介
Java為什麼會有集合存在?
在程式設計中,我們常常需要集中存放多個數據,比如:學校的學生花名冊,考試成績等等,類似情況。有人會會說:陣列也可以呀!沒錯,但是陣列有它的優點也有它的不足之處:
1.我們在使用陣列時,一旦為陣列指定長度,那麼這個陣列的長度就會是不可變的,如果需要儲存數量變化的資料,陣列就顯的無能為力了。
2.陣列固然方便使用,但是陣列沒有辦法儲存對映關係的資料,比如:語文:89,數學:100。。。或者:某某 :男,某某:女等等。
為了儲存數量不確定的資料,以及儲存具有對映關係的資料(也稱為關聯陣列),Java提供了集合類。集合類主要負責儲存、盛裝其他資料,因此集合類也被稱為容器類
集合類貼士
集合類集中在Java.util包下,為了處理多執行緒環境下的併發問題在Java 5時,Java.util.concurrent包下提供了一些支援多執行緒的集合類。
集合與陣列的不同
資料元素既可以是基本型別的值,也可以是物件(實際上儲存的是物件引用的變數),集合只能儲存物件(實際上也是儲存物件的引用變數,通常習慣上認為集合裡儲存的是物件)。
Java集合繼承樹
Java集合實際上是由兩個介面派生出來的它們是:Collection和Map,Collection和Map是集合框架的根介面,這兩個介面又包含一些子介面或實現類。
Collection繼承樹
Set 無序,不允許重複。List 有序,允許重複。
Map體系的繼承樹
所有的Map實現類都是用於儲存具有對映關係的資料(前面說的關係陣列)。這些實現類對冉在實現與用法上存在差異但是它們卻擁有共同點:Map儲存的每項資料都是以Key-Value 對,也就是由key和value兩部分組成。就像成績單:key(語文) -value(89),每項資料都是由題目與分陣列成。
Map中,key是不允許重複的,因為key用於標識集合裡的每項資料,如果需要查詢Map中的資料總是根據key來檢視。而value是可以重複的。
Java集合三大類
Set 集合類似一個罐子,包一個數據新增到集合時,Set無法記住新增這個元素的順序,所以Set集合內的元素不允許重複(否則系統無法準確識別這個元素);如果訪問Set中的元素,只能根據元素本身來訪問(這也是Set不能有重複的原因)。
List 集合非常像一個數組,它可以記住每次新增元素的數序,且List的長度可變。如果訪問List中的元素可以直接根據元素的索引來訪問。
Map 集合也像一個罐子,只是它裡面的資料都是由key-value兩部分組成。如果訪問Map中的資料,則需要根據key來獲取value資料。
常用集合
對於Set、List、Queue和Map 四種集合,最常用的實現類分別是:HashSet、TreeSet、ArrayList、ArrayQueue、LinkedList、HashMap、TreeMap等。
對於Java 5新增的具有併發控制的集合類,與Java 7新增的TransferQueue及實現類linkedTransferQueue,將在後續更新。
We come nearest to the great when we are great in humility.
我們最為謙卑時便最接近偉大。