1. 程式人生 > >java集合複習筆記-java集合繼承關係圖

java集合複習筆記-java集合繼承關係圖

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

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

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

集合框架圖


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集合進行排序,二分查詢等方法。
通常常用的集合都是執行緒不安全的。因為要提高效率。
如果多執行緒操作這些集合時,可以通過該工具類中的同步方法,將執行緒不安全的集合,轉換成安全的。