集合概述:
- 集合類用來(lái)存放對(duì)象
- 相當(dāng)于一個(gè)容器悍手,包含著一組對(duì)象
- 其中的每個(gè)對(duì)象作為集合的一個(gè)元素出現(xiàn)
數(shù)組與集合的比較
- 數(shù)組也是容器,定長(zhǎng),訪問(wèn)速度快坦康,不會(huì)自動(dòng)擴(kuò)充
- 數(shù)組可以包含基本數(shù)據(jù)類型或引用數(shù)據(jù)類型的對(duì)象竣付,集合只能包含引用類型的對(duì)象
Collection接口
- 一組稱為元素的對(duì)象
- 一個(gè)Collection中可以放不同類型的數(shù)據(jù)
- 是Set接口和List接口的父類
- 是否有特定的順序以及是否允許重復(fù),取決于它的實(shí)現(xiàn)
- Set 無(wú)序的集合:不允許重復(fù)
-HashSet - List 有序的集合:允許重復(fù)
-ArrayList
-LinkedList
- Set 無(wú)序的集合:不允許重復(fù)
Set接口
- 用來(lái)包含一組無(wú)序無(wú)重復(fù)的對(duì)象
- 無(wú)序:指元素存入順序和集合內(nèi)存儲(chǔ)的順序不同
- 無(wú)重復(fù):兩個(gè)對(duì)象e1滞欠,e2古胆,如果e1.equals(e2)返回true,則認(rèn)為e1和e2重復(fù)筛璧,在set中只留一個(gè)
Set接口的實(shí)現(xiàn)類
- HashSet- 特性:內(nèi)部對(duì)象的散列存取逸绎,即采用哈希技術(shù)
- TreeSet- 存入的順序跟存儲(chǔ)的順序不同,但是存儲(chǔ)是按照排序存儲(chǔ)的
使用foreach方式遍歷Set集合
List接口
用來(lái)包含一組有序有重復(fù)的對(duì)象
List中的元素都對(duì)應(yīng)一個(gè)整數(shù)型的序號(hào)夭谤,記載其正在容器中的位置棺牧,可以根據(jù)序號(hào)存取容器中的元素
-
List有兩種主要的集合實(shí)現(xiàn)類:
- ArrayList
- LinkedList
-
兩個(gè)實(shí)現(xiàn)類的區(qū)別
ArrayList
Array是線性順序存儲(chǔ)的,是一種線性表
它的特性和數(shù)組很接近朗儒,數(shù)組大小是不變的颊乘,而ArrayList的大小是可以動(dòng)態(tài)改變的
LinkedList是數(shù)據(jù)結(jié)構(gòu)中鏈表的java實(shí)現(xiàn)
-
相對(duì)于List來(lái)說(shuō),LinkedList最主要的功能方面的增強(qiáng)是可以在List的頭部和尾部添加醉锄,刪除乏悄,取得元素,直接提供了這些方法的實(shí)現(xiàn)恳不。所以它可以非常方便的實(shí)現(xiàn)我們數(shù)據(jù)結(jié)構(gòu)中的常見(jiàn)棧纲爸,隊(duì)列等。
ArrayList和LinkedList的比較
存儲(chǔ)結(jié)構(gòu):
-ArrayList是線性順序存儲(chǔ)
-LinkedList對(duì)象間彼此串聯(lián)起來(lái)的一個(gè)鏈表
操作性能:
-ArrayList適合隨機(jī)查詢的場(chǎng)合
-LinkedList元素的插入和刪除操作性高
Map接口
- 存儲(chǔ)的是鍵值對(duì)妆够,通過(guò)"鍵"對(duì)象查詢"值"對(duì)象
- key值不能重復(fù)
兩個(gè)實(shí)現(xiàn):
- HashMap 按Hash算法存儲(chǔ)
- Tree 是排序(按key排序)存儲(chǔ)的