1. 程式人生 > >複習筆記09 泛型與常見資料結構

複習筆記09 泛型與常見資料結構

集合&迭代器

1.1 集合體系結構

 集合體系圖

 

 

   在最頂層的父介面Collection中一定定義了所有子類集合的共同屬性和方法,因此我們首先需要學習Collection中共性方法,然後再去針對每個子類集合學習它的特有方法

1.2 Collection中的常用功能

boolean add(Object e): 向集合中新增元素

void clear():清空集合中所有元素

boolean contains(Object o):判斷集合中是否包含某個元素

boolean isEmpty():判斷集合中的元素是否為空

boolean remove(Object o):根據元素的內容來刪除某個元素

int size():獲取集合的長度

Object[] toArray():能夠將集合轉換成陣列並把集合中的元素儲存到陣列中

1.3 迭代器

Iterator介面的常用方法如下

hasNext()方法:判斷集合中是否有元素可以迭代

next()方法:用來返回迭代的下一個元素,並把指標向後移動一位。

集合的遍歷方式:

1.toArray(),可以把集合轉換成陣列,然後遍歷陣列即可

Object[] objs = c.toArray();

2.iterator(),可以返回一個迭代器物件,我們可以通過迭代器物件來迭代集合

Iterator it = c.iterator();

while(it.hasNext())  {

  System.out.println(it.next());}

 

1.4 併發修改異常

Exception in thread "main" java.util.ConcurrentModificationException:併發修改異常

迭代器是依賴於集合的,相當於集合的一個副本,當迭代器在操作的時候,如果發現和集合不一樣,則丟擲異常

解決方案:

在使用迭代器進行遍歷的時候使用迭代器來進行修改(ListIterator)

 

2 增強
for迴圈

增強for迴圈是JDK1.5以後出來的一個高階for迴圈,專門用來遍歷陣列和集合的。它的內部原理其實是個Iterator迭代器,所以在遍歷的過程中,不能對集合中的元素進行增刪操作。

格式:

for(元素的資料型別  變數 : Collection集合or陣列){

}

它用於遍歷Collection和陣列。通常只進行遍歷元素,不要在遍歷的過程中對集合元素進行增刪操作。

3 常見的資料結構

3.1 陣列

3.2 連結串列

3.3 &佇列

A:堆疊,採用該結構的集合,對元素的存取有如下的特點:

先進後出(即,存進去的元素,要在後它後面的元素依次取出後,才能取出該元素)。例如,子彈壓進彈夾,先壓進去的子彈在下面,後壓進去的子彈在上面,當開槍時,先彈出上面的子彈,然後才能彈出下面的子彈。

B:佇列,採用該結構的集合,對元素的存取有如下的特點:

先進先出(即,存進去的元素,要在後它前面的元素依次取出後,才能取出該元素)。例如,安檢。排成一列,每個人依次檢查,只有前面的人全部檢查完畢後,才能排到當前的人進行檢查。

 

4 List子體系

4.1 List子體系特點

A:有序的(儲存和讀取的順序是一致的) 

B:有整數索引 

C:允許重複的

4.2 List的特有功能

void add(int index, E element) :將元素新增到index索引位置上

E get(int index) :根據index索引獲取元素

E remove(int index) :根據index索引刪除元素

E set(int index, E element):將index索引位置的的元素設定為element

4.3 LinkedList的特有功能

LinkedList底層使用的是連結串列結構,因此增刪,查詢相對ArrayList較慢

void addFirst(E e) :向連結串列的頭部新增元素

void addLast(E e):向連結串列的尾部新增元素

E getFirst():獲取鏈頭的元素,不刪除元素

E getLast():獲取鏈尾的元素,不刪除元素

E removeFirst():返回鏈頭的元素並刪除鏈頭的元素

E removeLast():返回鏈尾的元素並刪除鏈尾的元素