java進階筆記Day(五)

857857zy發表於2020-12-22

集合的繼承體系
Collection介面
Collection是集合體系中的根介面,它定義了一些所有集合多具備的方法。任何一個具體的集合都可以使用這些方法
public boolean add(E e)
往集合中新增元素到末尾
public boolean addAll(Collection<? extends E> c)
把一個集合中的所有元素新增另一個集合中
public void clear()
清空集合中的元素
public boolean contains(Object o)
判斷集合是否包含指定的元素
public boolean isEmpty()
判斷集合是否為空
public boolean remove(Object o)
移除指定的元素
public int size()
獲取集合的長度
pubic Object[] toArray()
把集合轉換為陣列
集合的遍歷
迭代器遍歷
因為有些集合是有索引的、有些集合是沒有索引的,就需要一種通用的遍歷方式,這種遍歷方式就叫做迭代器
Collection coll=new ArrayList<>();
coll.add(“hello”);
coll.add(“world”);
coll.add(“java”);

//獲取迭代器物件
Iterator it=coll.iterator();
//hasNext(): 判斷是否有元素可以迭代(獲取)
while(it.hasNext()){
//next(): 獲取元素
String str=it.next();
System.out.println(str);
}
//注意:如果遍歷到最後一個元素,還強行使用next()獲取元素就會出現 NoSuchElementException
增強for遍歷
迭代器遍歷集合程式碼寫起來比較麻煩,所以Java語言提供了另外一個更加簡化的遍歷方式,就是增強for.
【增強for的底層原理其實就是迭代器】

Collection coll=new ArrayList<>();
coll.add(“hello”);
coll.add(“world”);
coll.add(“java”);
//增強for遍歷
for(String str:coll){
System.out.println(str);
}
併發修改異常(瞭解)
當我們使用迭代器或者增強for去遍歷集合的時候,集合自己不能去修改集合。

併發修改異常的產生原理(ConcurrentModificationException)
//Iterator的next方法,在獲取元素的時候會檢查元素是否有被修改,如果元素被修改了那麼就會出現併發修改異常
if (modCount != expectedModCount){
throw new ConcurrentModificationException();
}
注意:集合每次去呼叫add方法和remove方法的時候,都會對modCount的值進行遞增,表示這個集合被修改了1次
ListIterator迭代器(瞭解)
List集合多了一個listiterator()方法,用來獲取List集合的特有迭代器,它比普通的迭代器多了一些對集合進行操作的方法

public void add(E e)
新增元素
public boolean hasNext()
判斷是否有下一個元素
public boolean hasPrevious()
判斷是否有上一個元素
public E next()
獲取下一個元素
public E previous()
獲取上一個元素
public void remove()
移除當前的元素
public void set(E e)
修改當前的元素
資料結構
每一種集合內部資料的組織方式是不一樣的,他們的特點也不一樣,把這種資料的組織方式就叫做資料結構。

棧結構:先進後出(子彈夾)
進棧(壓棧):每次儲存元素時,這個元素儲存到棧頂的
出棧(彈棧):每次獲取元素,獲取棧頂的元素

佇列結構:先進先出(安檢機)
入佇列:從對列的後端進入
出佇列:從佇列的前端出來

陣列結構:查詢塊、增刪慢
查詢塊:通過索引可以直接找到元素
增刪慢:因為陣列的長度是固定的,當新增元素和刪除元素時會進行元素複製

連結串列結構:查詢慢、增刪快
查詢慢:從頭往尾一個一個查
增刪快:把連結串列的指向變動一下即可
集合底層的資料結構

Collection介面
List: 有索引、有序、元素可以重複
ArrayList:陣列結構(查詢塊、增刪慢)
LinkedList:連結串列結構(查詢慢、增刪快)

Set:沒有索引、無序、元素不能重複
HashSet: 雜湊表結構
TreeSet: 紅黑樹結構
LinkedList的特有方法
LinkedList是連結串列結構,多了一些針對頭和尾進行操作的方法

public void addFirst(E e)
往頭部新增元素
public void addLast(E e)
往尾部新增元素

public E removeFirst()
移除頭部的元素
public E removeLast()
移除尾部的元素

public E getFirst()
獲取頭部的元素
public E getLast()
獲取尾部的元素

相關文章