Java中的集合

2021-08-22 08:37:07 字數 3977 閱讀 9622

collection 是單列集合的頂層介面。collection的常用方法:

boolean add(e e)      確保此 collection 包含指定的元素。 

boolean addall(collection<? extends e> c)          將指定 collection 中的所有元素都新增到此 collection 中。 

void clear()       移除此 collection 中的所有元素。 

boolean contains(object o)           如果此 collection 包含指定的元素,則返回 true。 

boolean containsall(collection<?> c)          如果此 collection 包含指定 collection 中的所有元素,則返回 true。 

iteratoriterator()          返回在此 collection 的元素上進行迭代的迭代器。 

boolean remove(object o)          從此 collection 中移除指定元素的單個例項,如果存在的話。 

boolean removeall(collection<?> c)           移除此 collection 中那些也包含在指定 collection 中的所有元素。 

boolean retainall(collection<?> c)          僅保留此 collection 中那些也包含在指定 collection 的元素。 

int size()           返回此 collection 中的元素數。 

object toarray()          返回包含此 collection 中所有元素的陣列。 

collection的兩個子介面 list和set

list是有序的collection,元素儲存順序一致,元素可以重複。list常用的方法有:

e get(int index)           返回列表中指定位置的元素。 

int indexof(object o)          返回此列表中第一次出現的指定元素的索引;如果此列表不包含該元素,則返回 -1。 

int lastindexof(object o)                   返回此列表中最後出現的指定元素的索引;如果列表不包含此元素,則返回 -1。 

listiteratorlistiterator()          返回此列表元素的列表迭代器(按適當順序)。 

e set(int index, e element)          用指定元素替換列表中指定位置的元素(可選操作)。 

listsublist(int fromindex, int toindex)          返回列表中指定的 fromindex(包括 )和 toindex(不包括)之間的部分檢視。         

list的三個子實現類arraylist   、 linkedlist    和vector     

arraylist   底層資料結構是陣列,查詢快,增刪慢,執行緒不同步,效率高,可以儲存重複元素

linkedlist 底層資料結構是鍊錶,查詢慢,增刪快,執行緒不安全,效率高         

linkedlist的特有方法

void addfirst(e e) 

將指定元素插入此列表的開頭。 

void addlast(e e) 

將指定元素新增到此列表的結尾。 

e getfirst() 

返回此列表的第乙個元素。 

e getlast() 

返回此列表的最後乙個元素。 

e removefirst() 

移除並返回此列表的第乙個元素。 

e removelast() 

移除並返回此列表的最後乙個元素。 

vector:底層資料結構是陣列,查詢快,增刪慢,執行緒安全,效率低。

void addelement(e obj) 

將指定的元件新增到此向量的末尾,將其大小增加 1。 

e elementat(int index) 

返回指定索引處的元件。 

enumerationelements() 

返回此向量的元件的列舉。 

e firstelement() 

返回此向量的第乙個元件(位於索引 0) 處的項)。 

e lastelement() 

返回此向量的最後乙個元件。 

set集合      元素無序(元素訪問的順序不一致), 元素不可以重複。

set 的三個子實現類  hashset 、linkedhashset、treeset

hashset   底層資料結構是hash表,元素的訪問順序不一致,允許儲存null鍵和null值,執行緒不安全,效率高,元素唯一。

hashset集合保證元素的唯一性是靠元素重寫hahscode()方法和equals()方法,如果元素不重寫這兩個方法,則無法保證元素的唯一性。

linkedhashset    底層資料結構是鍊錶和hash表,執行緒不安全,效率高。

鍊錶保證了元素有序,hash表保證了元素唯一

treeset  底層資料結構是二叉樹,元素唯一,能對元素進行排序,執行緒不安全,效率高。

treeset中排序的方法

1、自然排序,使用空參構造,要求元素實現實comparable介面 重寫compareto方法

2、比較器排序,使用有參構造,傳入comparator比較器  重寫compare方法。

map  將鍵對映到值的物件。乙個對映不能包含重複的鍵,每個鍵最多只能應設乙個值。

map的所有資料結構只與鍵有關。

map 的常用方法

void clear()         從此對映中移除所有對映關係(可選操作)。 

boolean containskey(object key)         如果此對映包含指定鍵的對映關係,則返回 true。 

boolean containsvalue(object value)          如果此對映將乙個或多個鍵對映到指定值,則返回 true。 

set> entryset()          返回此對映中包含的對映關係的 set 檢視。 

boolean equals(object o)           比較指定的物件與此對映是否相等。 

v get(object key)           返回指定鍵所對映的值;如果此對映不包含該鍵的對映關係,則返回 null。 

int hashcode()          返回此對映的雜湊碼值。 

boolean isempty()          如果此對映未包含鍵-值對映關係,則返回 true。 

setkeyset()          返回此對映中包含的鍵的 set 檢視。 

v put(k key, v value)          將指定的值與此對映中的指定鍵關聯(可選操作)。 

void putall(map<? extends k,? extends v> m)          從指定對映中將所有對映關係複製到此對映中(可選操作)。 

v remove(object key)          如果存在乙個鍵的對映關係,則將其從此對映中移除(可選操作)。 

int size()         返回此對映中的鍵-值對映關係數。 

collectionvalues()         返回此對映中包含的值的 collection 檢視。 

map 的兩種遍歷方式

方式1 使用 keyset()   得到鍵的集合,通過鍵找值。

方式2 使用entryset() 返回對映關係的set集合,通過getkey(),getvalue()得到值。

hashmap 基於雜湊表的map介面的實現。執行緒不同步,允許使用null建和null值,元素無序,如果鍵相同值覆蓋。

linkedhashmap  map介面的雜湊表和鏈結列表的實現,執行緒不同步,元素有序且唯一。

treemap 的底層資料結構是二叉樹,可與對元素進行排序,執行緒不安全。

java中的集合

set hashset無序不重複,底層資料結構是雜湊表,執行緒非同步,保證元素唯一性原理是判斷hashcode值是否相同 位址相同 如果相同還會繼續判斷equals方法是否為true 是否是同乙個物件 treeset字典序不重複,底層資料是二叉樹,保證元素唯一性原理是compareto方法retur...

Java中的集合

有序的 允許重複的 arraylist實現類 基於陣列實現 remove語句,刪除成功則返回true,不成功則返回false 注 不要在迭代時進行刪除,否則會出錯,可以使用迭代器自身的remove方法,如上。linklist實現類 基於鍊錶實現 與arraylist區別 越靠近頭部的新增刪除,arr...

java中的集合

1.1 collection介面 新增 add e e addall collectionc 刪除 clear 清空集合 remove object o 刪除乙個元素 removeall collection c 刪除兩個集合的交集部分 retainall collection c 刪除兩個集合沒有...