複習筆記09 泛型與常見資料結構
1 集合&迭代器
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():返回鏈尾的元素並刪除鏈尾的元素