?史上最全的Java容器集合之入門
前言
文字已收錄至我的GitHub倉庫,歡迎Star:github.com/bin39232820…
種一棵樹最好的時間是十年前,其次是現在
我知道很多人不玩qq了,但是懷舊一下,歡迎加入六脈神劍Java菜鳥學習群,群聊號碼:549684836 鼓勵大家在技術的路上寫部落格
絮叨
不知不覺,自己也寫了十來篇文章,在這裡謝謝大家的關注,我會繼續加油。 接下來講Java的容器,至於能寫多少篇,寫多詳細,看看吧,爭取深一點。
零基礎入門不需要閱讀原始碼,面試前一定要回顧和閱讀原始碼(這是面試必考的知識點)!
集合的由來
通常,我們的Java程式需要根據程式執行時才知道建立了多少個物件。但若非程式執行,程式開發階段,我們根本不知道到底需要多少個數量的物件,甚至不知道它的準確型別。為了滿足這些常規的程式設計需要,我們要求能在任何時候,任何地點建立任意數量的物件,而這些物件用什麼來容納呢?我們首先想到了陣列,但是!陣列只能存放同一型別的資料,而且其長度是固定的,那怎麼辦了?集合便應運而生了。
集合和陣列的區別:
集合圖
其實最主要還是講我圈的這幾個Java.util下面的包 讓我們從上往下看吧,這篇就講幾個上層介面吧 具體的容器到時候一個個講
Iterator迭代器
我們可以發現一個特點,上述所有的集合類,除了map系列的集合,即左邊的集合都實現了Iterator介面
它是Java集合的頂層介面(不包括map系列的集合,Map介面是map系列集合的頂層介面)
Object next():返回迭代器剛越過的元素的引用,返回值是Object,需要強制轉換成自己需要的型別。
boolean hasNext():判斷容器內是否還有可供訪問的元素。
void remove():刪除迭代器剛越過的元素。
所以除了map系列的集合,我麼都能通過迭代器來對集合中的元素進行遍歷。
注意:我們可以在原始碼中追溯到集合的頂層介面,比如Collection介面,可以看到它繼承的是類Iterable
然後Iterable中有Iterator我們來具體聊聊 Iterator
總共4個方法
- 判斷下個迭代器是否還有下一個元素
- 返回下一個元素的值,並且把自身offset移動下一位
- 第三個方法 這個可以刪除用這個迭代器集合中的元素(注意如果刪除之後還是前面獲得的迭代器,你會發現原來的迭代器還是沒變,得重新獲得刪除元素之後的迭代器)
- 1.8的新方法 可以直接遍歷迭代器剩下的元素,如果從最開始的話就是遍歷所有的迭代器(1.8的函式語言程式設計,寫的蠻爽,後面部落格會補)
所以我想說的是所有的集合都有迭代器可以用來遍歷哈 它是所有集合的最上級
ListIterator
為什麼要講它呢,本來沒打算講,但是想了一下,要寫就寫全點吧
ListIterator 是 Iterator 的子介面,ListIterator 不僅可以向後迭代,也可以向前迭代。相比 Iterator,- 它增加了以下這些方法:
- boolean hasPrevious();
- E previous();
- int nextIndex();
- int previousIndex();
- void set(E e);
- void add(E e);
其實就是 增加可以向前一個下標的操作。大家可以寫個測試方法自己試試就知道了 還可以對迭代出來的元素進行替換set()方法
Collection介面介紹
Collection的作用就是規定了一個集合有哪些基本的操作。
這裡主要是插入資料,清空資料,是否包含,是否相等,集合裡的資料個數和轉化成熟組這幾種操作。比如:
int size() 獲取元素個數
boolean isEmpty() 是否個數為零
boolean contains(Object element) 是否包含指定元素
boolean add(E element) 新增元素,成功時返回true
boolean remove(Object element) 刪除元素,成功時返回true
Iterator iterator() 獲取迭代器 Stream 1.8的流 (後面也比較常用)
還有些操作整個集合的方法,比如:
boolean containsAll(Collection<?> c) 是否包含指定集合 c 的全部元素
boolean addAll(Collection<? extends E> c) 新增集合 c 中所有的元素到本集合中,如果集合有改變就返回 true
boolean removeAll(Collection<?> c) 刪除本集合中和 c 集合中一致的元素,如果集合有改變就返回 true
boolean retainAll(Collection<?> c) 保留本集合中 c 集合中兩者共有的,如果集合有改變就返回 true
void clear() 刪除所有元素
還有對陣列操作的方法: Object[] toArray() 返回一個包含集合中所有元素的陣列
T[] toArray(T[] a) 返回一個包含集合中所有元素的陣列,執行時根據集合元素的型別指定陣列的型別
結尾
容器的集合入門介紹算是講完了 後面我會針對他們的具體實現深入講講,大家一起學習,一起進步
因為博主也是一個開發萌新 我也是一邊學一邊寫 我有個目標就是一週 二到三篇 希望能堅持個一年吧 希望各位大佬多提意見,讓我多學習,一起進步。
日常求贊
好了各位,以上就是這篇文章的全部內容了,能看到這裡的人呀,都是人才。
創作不易,各位的支援和認可,就是我創作的最大動力,我們下篇文章見
六脈神劍 | 文 【原創】如果本篇部落格有任何錯誤,請批評指教,不勝感激 !