java進階筆記Day(五)
集合的繼承體系
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()
獲取尾部的元素
相關文章
- Java小白進階筆記(5)-進階物件導向Java筆記物件
- day10_01_我的Java學習筆記 (JavaSE進階課程預備)Java筆記
- Java小白進階筆記(1)-重新認識JavaJava筆記
- 進階筆記筆記
- [Java筆記]day03Java筆記
- [Java筆記]day26Java筆記
- [Java筆記]day29Java筆記
- flaskr 進階筆記Flask筆記
- Arthas進階-筆記筆記
- java 學習筆記 day02Java筆記
- Java 學習筆記--Day1Java筆記
- Swift進階學習筆記Swift筆記
- Go 進階學習筆記Go筆記
- 嵌入式狗的 JAVA 入門筆記4 進階。。Java筆記
- Java小白進階筆記(2)-變數和資料型別Java筆記變數資料型別
- python進階學習筆記(一)Python筆記
- 高階前端進階(五)前端
- Java進階面試系列階段性總結【石杉的架構筆記】Java面試架構筆記
- Java學習筆記-Day48 JavaScript(三)筆記JavaScript
- Day 1 筆記筆記
- Day 2 筆記筆記
- Day 3 筆記筆記
- Koa2進階學習筆記筆記
- 【廖雪峰python進階筆記】模組Python筆記
- 線段樹進階 學習筆記筆記
- Java面試題中高階進階(JVM篇Java記憶體)Java面試題JVM記憶體
- Go語言核心36講(Go語言進階技術五)--學習筆記Go筆記
- Java學習筆記-Day52 JavaWeb、Tomcat、ServletJava筆記WebTomcatServlet
- Java學習筆記-Day53 Servlet與JSPJava筆記ServletJS
- React 進階之路(五)React
- day 10 函式的進階函式
- Java核心技術學習筆記——進階——第五章 Java多執行緒和併發程式設計——5.5 Java併發框架ExecutorJava筆記執行緒程式設計框架
- day0.5筆記筆記
- 【廖雪峰python進階筆記】定製類Python筆記
- spark學習筆記--進階程式設計Spark筆記程式設計
- 圖論進階學習筆記(四)(2024.10.4)圖論筆記
- 前端進階-個人筆記-小知識前端筆記
- Java IO學習筆記五:BIO到NIOJava筆記