最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Collection集合框架

2020-12-02 14:00 作者:編程大戰(zhàn)  | 我要投稿

java的集合框架

  • java.util.Collection接口

  1. Collection:是所有集合的頂級(jí)接口,里面規(guī)定了集合操作元素的相關(guān)功能方法集合與數(shù)組一樣,用于存儲(chǔ)一組元素,但是集合又多個(gè)不同的實(shí)現(xiàn)類來(lái)實(shí)現(xiàn)不同的數(shù)據(jù)結(jié)構(gòu)

  • Collection下面有兩個(gè)常見(jiàn)的子接口:List和Set

1.1 java.util.List:?線性表,特點(diǎn):可以存放重復(fù)元素并且有序,可以通過(guò)下標(biāo)操作

List常見(jiàn)的實(shí)現(xiàn)類:

1.1.1:java.util.ArraysList

內(nèi)部使用數(shù)組實(shí)現(xiàn),查詢性能更好

1.1.2java.util.LinkedList

內(nèi)部用鏈表實(shí)現(xiàn),增刪元素性能更好,首尾增刪元素性能最佳

(這里的重復(fù)元素判定是依靠元素自身equals方法比較的結(jié)果而定)


1.2 java.util.Set:不可以重復(fù)的集合,并且無(wú)序

Set常見(jiàn)的實(shí)現(xiàn)類:java.util.HashSet

HashSet底層就是HashMap

隊(duì)列繼承Collection所以隊(duì)列本身也是一種集合:隊(duì)列(堆棧)

Collection c = new ArrayList();

boolean add(E e):向當(dāng)前集合添加一個(gè)元素,成功添加后返回true否則返回false

int size():返回當(dāng)前集合的元素個(gè)數(shù)

boolean isEmpty():判斷集合是否為空集,當(dāng)集合的size為0時(shí),isEmpty返回true

c.clear():清空集合

boolean contains(Object o):判斷當(dāng)前集合是否包含給定元素
集合的contains判斷包含時(shí)的依據(jù)為:給定元素是否與集合中現(xiàn)有的元素存在equals比較為true的情況,存在則認(rèn)為包含

remove方法刪除元素時(shí)也是刪除與集合中equals比較為true的,元素對(duì)于List集合而言,重復(fù)元素僅刪除一次

集合只能存放引用類型元素,并且存放的是元素的引用(地址)

oolean addAll(Collection c):將給定集合中的所有元素添加到當(dāng)前集合

boolean containsAll(Collection e):判斷當(dāng)前集合是否包含給定集合中的所有元素

removerAll:刪除當(dāng)前集合中與給定集合的共有元素

集合的遍歷

  • Collection提供了一個(gè)方法

  • Iterator iterator()

  • 該方法會(huì)返回一個(gè)用于遍歷當(dāng)前集合的迭代器實(shí)現(xiàn)類,使用它可以對(duì)集合進(jìn)行遍歷

java.util.Iterator接口:迭代器

  • 迭代器中規(guī)定了遍歷集合元素所需要的相關(guān)方法,使用迭代器遍歷遵循的原則為:問(wèn),取,刪,其中刪除元素不是遍歷過(guò)程中的必要操作

  • 注:不同的集合實(shí)現(xiàn)類都提供一個(gè)用于遍歷自身的迭代器實(shí)現(xiàn)類,我們不需要知道它們的名字,用多態(tài)的思想把它們看成Iterator進(jìn)行操作即可.

JDK5推出時(shí)推出了一個(gè)新特性:泛型
泛型又稱為參數(shù)實(shí)例化類型,允許我們我們?cè)谑褂靡粋€(gè)類型的時(shí)候去指定它里面某些屬性或方法的參數(shù)和返回值的類型,使得我們使用這個(gè)類時(shí)更符合我們的需求
泛型在集合中被大量使用,用于規(guī)定集合中的元素類型

java.util.List接口:
List list = new ArrayList<>();

E get(int index):獲取指定下標(biāo)所對(duì)應(yīng)的元素
E set(int index,E e):將給定元素設(shè)置到指定位置,返回值為該位置原有元素

void add(int index,E e):將給定元素添加到指定位置,原位置及后續(xù)元素順序向后移動(dòng)

E remove(int index):刪除并返回指定位置的元素

List subList(int start,int end): 獲取當(dāng)前集合指定范圍內(nèi)的子集

增強(qiáng)型for循環(huán) JDK5推出時(shí)推出的一個(gè)新特性

  • 它也稱為:增強(qiáng)for循環(huán)

  • 新循環(huán)不取代傳統(tǒng)的for循環(huán)的工作,它只是用相同的語(yǔ)法去遍歷集合或數(shù)組使用

  • 新循環(huán)是編譯器認(rèn)可,而不是java虛擬機(jī)認(rèn)可,編譯器在編譯源代碼時(shí)發(fā)現(xiàn)使用新循環(huán)遍歷數(shù)組時(shí),會(huì)將代碼改為普通的for循環(huán)進(jìn)行

  • 新循環(huán)遍歷集合會(huì)被編譯器修改為迭代器遍歷 因此在使用新循環(huán)遍歷過(guò)程中,仍然不能通過(guò)集合的方法增刪元素

集合轉(zhuǎn)換為數(shù)組:Collection提供了一個(gè)方法:toArray(),可以將當(dāng)前集合轉(zhuǎn)換為一個(gè)數(shù)組

將當(dāng)前集合轉(zhuǎn)換為數(shù)組,該方法要求傳入一個(gè)數(shù)組,如果該數(shù)組可以用(數(shù)組長(zhǎng)度>=集合的size時(shí))會(huì)將當(dāng)前集合元素存入該數(shù)組后再將該數(shù)組返回
如果不可以用會(huì)創(chuàng)建一個(gè)與參數(shù)數(shù)組同類型并且長(zhǎng)度與size一致的數(shù)組并將元素存放后返回


數(shù)組轉(zhuǎn)換為集合:數(shù)組的工具類:Arrays提供了一個(gè)靜態(tài)方法:asList,可以將一個(gè)數(shù)組轉(zhuǎn)換為一個(gè)List集合

  1. 通過(guò)數(shù)組轉(zhuǎn)化而來(lái)的集合,對(duì)該集合的元素操作就是對(duì)原數(shù)組的操作這一點(diǎn)需要特別注意!

  2. 由于數(shù)組是定長(zhǎng)的,因此從從數(shù)組轉(zhuǎn)換的集合不可以調(diào)用增刪元素等會(huì)影響數(shù)組的長(zhǎng)度,否則會(huì)拋出異常:UnsupportedOperationException

如果想向集合中增刪元素,需要自行創(chuàng)建一個(gè)集合,然后將原集合元素導(dǎo)入到該集合即可

所有的集合元素都支持一個(gè)參數(shù)類型為Collection的構(gòu)造方法,作用是在創(chuàng)建當(dāng)前集合的同時(shí)包含給定集合中的所有元素

集合排序

Comparable和Comparator區(qū)別

Comparable, Comparator都可以用來(lái)實(shí)現(xiàn)集合中元素的比較、排序的接口
Comparable:位于包java.lang下,是在集合內(nèi)部定義的方法,該接口中有一個(gè)抽象方法要求實(shí)現(xiàn)類重寫(xiě),定義該類元素之間的大小關(guān)系,java中很多常用的類都實(shí)現(xiàn)了它,比如String,包裝類
Comparator:是比較器的接口,位于包java.util下,是在集合外部定義的方法,實(shí)現(xiàn)它就需要重寫(xiě)compare來(lái)定義,因此實(shí)現(xiàn)這個(gè)接口的類是可比較的,通過(guò)這里直接以匿名內(nèi)部類形式創(chuàng)建為,

Collection和Collections的區(qū)別

**Collection:**是所有集合的頂級(jí)接口,規(guī)定了所有集合都要具備的功能。集合與數(shù)組一樣,用于保存一組元素,但是實(shí)現(xiàn)類眾多(有多種不同的數(shù)據(jù)結(jié)構(gòu))
**Collections:**是個(gè)一個(gè)工具類,提供了一系列的靜態(tài)方法來(lái)輔助容器操作,這些方法包括對(duì)容器的搜索、排序、線程安全化等等。



Collection集合框架的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
西昌市| 闵行区| 石泉县| 文成县| 东平县| 且末县| 大渡口区| 通海县| 彰化市| 古丈县| 翁源县| 冕宁县| 泉州市| 丰宁| 南阳市| 抚州市| 奇台县| 綦江县| 溧水县| 万山特区| 瑞安市| 攀枝花市| 锦屏县| 彰武县| 黄山市| 永平县| 阿拉善右旗| 灵山县| 桐庐县| 博罗县| 萝北县| 蕉岭县| 京山县| 江都市| 开平市| 张家口市| 文山县| 正宁县| 广安市| 侯马市| 平昌县|