Java之集合框架Collection

2021-07-15 18:26:43 字數 2981 閱讀 2797

一、集合框架概述

1、集合類的出現:物件導向語言對事物的體現的體現都是以物件的形式,所以為了方便對多個物件的操作,就對物件進行儲存,集合就是儲存物件最常用的一種方式。

2、陣列與集合的異同:陣列和集合同是容器,陣列既能儲存基本資料型別,也能儲存物件,集合只能儲存物件,陣列的長度是固定的,集合的長度是可變的,陣列內儲存的物件型別在建立時就已經確定了,而集合可以儲存多種不同類物件。

3、集合類中有眾多的子類物件,它們作為容器對資料的儲存方式都不同,這種方式叫做資料結構。

二、collection

collection是集合的根介面,其中定義了集合這一體系的共性功能,在集合中儲存的都是物件的引用,既位址。

1、增加:往集合中加入元素的方法有add、addall,其中add方法的引數型別是object,以便於接收任意型別的物件,addall方法的引數型別是集合,用於將集合中的元素全部加入到指定集合中,這兩種方法的返回值型別均為boolean。

2、刪除:集合中控制刪除的方法有remove、removeall()、clear(),clear方法用於清空集合,沒有具體的返回值型別,remove用於刪除某個物件,removeall用於刪除集合引數記憶體在於呼叫該方法集合內的物件,這兩種方法返回值型別均為boolean。

3、判斷:contains方法有兩個過載函式,用於判斷是否存在某個物件或者某個集合。

4、獲取:iterator方法獲取迭代器用於取出集合中的元素。迭代器定義於集合內部,是乙個內部類,這樣就可以直接訪問結合內部的元素,每乙個容器的資料結構不同,所以取出的動作的細節也不同,但是都有共性的內容,判斷和取出,將這麼共性的內容進行抽取就形成了介面iterator。

5、查詢:size方法用於獲取集合元素的個數。

三、list

1、list類是collection類乙個子類,是乙個抽象類,它儲存物件的特點是有序的,元素可以重複,我們經常使用的list子類物件是arraylist、linkedlist、vector。因為list集合體系是有序列的,所以list集合可以通過角標操作集合內的元素。

2、list集合的特性

(1)特有方法:增加:add(int index,element):在指定位置增加元素,沒有具體的返回值型別。

add(int index,collection):在指定位置增加集合,返回值型別為boolean。

刪除:remove(int index):刪除指定位置的元素,並返回刪除的元素。

更改:set(int index,element):將指定位置的元素用給定的元素替換,並返回被替換的元素。

查詢:get(int index):獲取指定位置的元素。

sublist(int from,int end):獲取指定區間內的所有元素。

(2)list特有迭代器:listiterator是iterator的子介面,在迭代時,我們不可以通過集合物件的方法操作集合中的元素,因為會發生併發修改異常,所以只能使用迭代器的方法操作元素,可是iterator的方法是有限的,只能對元素就行判斷、取出和刪除操作,弱國想要對元素進行修改、增加等,我們就可以使用listiterator實現,它的另乙個特殊方法是逆向遍歷集合,通過hasprovious和privious方法實現。

(3)arraylist、linkedlist和vector的比較:arraylist的底層資料結構是陣列結構,查詢速度很快,但增刪較慢,執行緒是不同步的,linkedlist的底層資料結構是鍊錶結構,增刪很快,查詢速度很慢。vertor的底層資料結構是陣列結構,功能與arraylist相同,它是1.2版本以前使用的,但是它是執行緒同步的,無論增刪或者查詢的速度都很慢,所以被arraylist所取代,

(4)在vector中有乙個特有的取出元素的方法列舉,通過elements方法獲取列舉enumeration,在通過hasmoreelements和nextelement方法實現取出元素的過程,由此可見,列舉的名稱和列舉方法的名稱都很長,不便於書寫,所以被迭代器所取代。

(5)在linkedlist中也存在一些其特有方法:addfirst()、addlast()、getfirst()、getlast()、removefirst()、removelast()分別實現在集合的開始、末尾增加、獲取、刪除元素,removefirst和removelast方法在刪除元素的同時會返回被刪除的元素,當集合中沒有元素時會丟擲nosuchelement***ception,而在1.6版本以後這六種方法被offerfirst、offerlast、peekfirst、peeklast、pollfirst、polllast取代,不同之處在於但pollfirst、polllast方法刪除獲取元素時,如果集合內沒有元素,會返回null而不會丟擲異常。

(6)list集合判斷元素是否相同的依據是元素的equals方法。

四、set

1、set集合不同於list集合,它的元素是無序的,且不可重複,在set集合中沒有特殊的方法,全是實現的collection的方法。常用的兩個set類結合有hashset、treeset、

2、hashset:底層是雜湊表資料結構,執行緒非同步的,元素存入後按雜湊值的大小儲存。hashset是保證元素唯一性依據的是hashcode和equals方法,如果元素的hashcode值一樣,就會繼續判斷equals是否為true,如果hashcode值不同,不會呼叫equals方法。同樣的在進行remove和contains方法時,會呼叫hashcode方法,如果沒有相同的hashcode值,則不存在,如果有相同的hashcode值,會判斷equals是否為true。

3、treeset:treeset集合的底層資料結構是二叉樹,特點是可以對set集合中的元素進行排序,進行排序的依據是存入的物件必須具有比較性,因此需要實現comparable,該介面可以強制讓實現該介面的物件具有比較性,保證元素唯一性的依據是compareto方法的返回值是0,treeset實現排序的方式有兩種,一是實現comparable介面,覆蓋compareto方法,讓元素自身具備比較性,這種方式也稱為元素的自然順序,或者叫預設順序,第二種方式是當元素自身不具備比較性或者具備的比較性不是我們所需要的,那麼我們就讓集合自身具備比較性,定義乙個比較器作為引數傳遞給集合的建構函式,這樣集合在初始化時就具備了比較性。當兩種排序都存在時,以比較器為主。

java集合框架的乙個根介面Collection

對外的介面 介面的實現 對集合運算的演算法。collection是list set queue介面的父介面。方法 add 向集合的尾部追加指定的元素 addall 將指定集合中的元素都新增到此集合中 clear 移除集合中的所有操作 contains 如果此集合中包含指定元素,則返回true con...

java 集合框架 之 list

list 介面 常見實現類 arraylist是基於陣列實現的,是乙個陣列佇列。可以動態的增加容量!查詢快 1.增加乙個值 list nums new arraylist nums.add 3 nums.add 5 nums.add 1 nums.add 0 system.out.println n...

Java 集合框架之 Collection

為了方便對多個物件進行操作和儲存,又因為物件陣列的長度和是固定的,且只能儲存同一種型別的元素 陣列長度固定,集合長度可變 陣列儲存的是同一種型別的元素,而集合可以儲存不同型別的元素 陣列元素既可以是基本資料型別,也可以是引用資料型別,集合元素只能是引用型別。list 集合特點 元素有序 插入順序和獲...