Java集合總結

2021-08-21 01:49:38 字數 3270 閱讀 2215

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

*陣列雖然也可以儲存物件,但長度是固定的;集合長度是可變的,陣列中可以儲存基本資料型別,集合只能儲存物件。

*集合類的特點:集合只用於儲存物件,集合長度是可變的,集合可以儲存不同型別的物件。

集合框架圖

1、collection (集合的最大介面)繼承關係

——list 可以存放重複的內容

——set  不能存放重複的內容,所以的重複內容靠hashcode()和equals()兩個方法區分

——queue  佇列介面

——sortedset  可以對集合中的資料進行排序

collection定義了集合框架的共性功能。

1,新增

add(e);

addall(collection);

2,刪除

remove(e);

removeall(collection);

clear();

3,判斷。

contains(e);

isempty();

4,獲取

iterator();

size();

5,獲取交集。

retainall();

6,集合變陣列。

toarray();

*add方法的引數型別是object。以便於接收任意型別物件。

*集合中儲存的都是物件的引用(位址)

2、list的常用子類

list:

特有方法。凡是可以操作角標的方法都是該體系特有的方法。

增 add(index,element);

addall(index,collection);

刪 remove(index);

改 set(index,element);

查 get(index):

sublist(from,to);

listiterator();

int indexof(obj):獲取指定元素的位置。

listiterator listiterator();

——arraylist   執行緒不安全,查詢速度快

——vector  執行緒安全,但速度慢,已被arraylist替代

——linkedlist  鍊錶結果,增刪速度快

4、set介面

set:元素是無序(存入和取出的順序不一定一致),元素不可以重複。

|——hashset:底層

資料結構

是雜湊表。是執行緒不安全的。不同步。

hashset是如何保證元素唯一性的呢?

是通過元素的兩個方法,hashcode和equals來完成。

如果元素的hashcode值相同,才會判斷equals是否為true。

如果元素的hashcode值不同,不會呼叫equals。

注意,對於判斷元素是否存在,以及刪除等操作,依賴的方法是元素的hashcode和equals方法。

——treeset:

有序的存放:treeset  執行緒不安全,可以對set集合中的元素進行排序

通過compareto或者compare方法來保證元素的唯一性,元素以二叉樹的形式存放。

5、object類

*在實際開發中經常會碰到區分同一物件的問題,乙個完整的類最好覆寫object類的hashcode()、equals()、tostring()三個方法。

6、集合的輸出

——4種常見的輸出方式

——iterator: 迭代輸出,使用最多的輸出方式

——listiterator: iterator的子介面,專門用於輸出list中的內容

——enumeration

——foreach

在迭代時,不可以通過集合物件的方法操作集合中的元素。

因為會發生concurrentmodificationexception異常。

所以,在迭代器時,只能用迭代器的放過操作元素,可是iterator方法是有限的,

只能對元素進行判斷,取出,刪除的操作,

如果想要其他的操作如新增,修改等,就需要使用其子介面,listiterator。

該介面只能通過list集合的listiterator方法獲取。

7、map介面

*correction、set、list介面都屬於單值的操作,而map中的每個元素都使用key——>value的形式儲存在集合中。

map集合:該集合儲存鍵值對。一對一對往裡存。而且要保證鍵的唯一性。

1,新增。

put(k key, v value) 

putall(map extends k,? extends v> m)

2,刪除。

clear() 

remove(object key)

3,判斷。

containsvalue(object value) 

containskey(object key) 

isempty()

4,獲取。

get(object key) 

size() 

values()

entryset() 

keyset()

8、map介面的常用子類

map |hashmap:底層是雜湊表資料結構,允許使用 null 值和 null 鍵,該集合是不同步的。將hashtable替代,jdk1.2.效率高。

|--treemap:底層是二叉樹資料結構。執行緒不同步。可以用於給map集合中的鍵進行排序。

9、集合工具類

collections:集合框架的工具類。裡面定義的都是靜態方法。

collections和collection有什麼區別?

collection是集合框架中的乙個頂層介面,它裡面定義了單列集合的共性方法。

它有兩個常用的子介面,

list:對元素都有定義索引。有序的。可以重複元素。

set:不可以重複元素。無序。

collections是集合框架中的乙個工具類。該類中的方法都是靜態的

提供的方法中有可以對list集合進行排序,二分查詢等方法。

通常常用的集合都是執行緒不安全的。因為要提高效率。

如果多執行緒操作這些集合時,可以通過該工具類中的同步方法,將執行緒不安全的集合,轉換成安全的。

JAVA 集合總結

如果涉及到堆疊,佇列等操作,應該考慮用list,對於需要快速插入,刪除元素,應該使用linkedlist,如果需要快速隨機訪問元素,應該使用arraylist。如果程式在單執行緒環境中,或者訪問僅僅在乙個執行緒中進行,考慮非同步的類,其效率較高,如果多個執行緒可能同時操作乙個類,應該使用同步的類。要...

java 集合總結

結構 collection list linkedlist arraylist vector stack set map hashtable hashmap weakhashmap 區別 類是否有序 是否執行緒安全 是否允許重複 是否允許空值 常用情景 描述總結 linkedlist有序否 是是對於...

java集合總結

set 其中的值不允許重複,無序的資料結構 list 其中的值允許重複,因為其為有序的資料結構 map 成對的資料結構,健值必須具有唯一性 鍵不能同,否則值替換 list按物件進入的順序儲存物件,不做排序或編輯操作。set對每個物件只接受一次,並使用自己內部的排序方法 通常,你只關心某個元素是否屬於...