1. 程式人生 > 程式設計 >?史上最全的Java容器集合之入門

?史上最全的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) 返回一個包含集合中所有元素的陣列,執行時根據集合元素的型別指定陣列的型別   

結尾

容器的集合入門介紹算是講完了 後面我會針對他們的具體實現深入講講,大家一起學習,一起進步

因為博主也是一個開發萌新 我也是一邊學一邊寫 我有個目標就是一週 二到三篇 希望能堅持個一年吧 希望各位大佬多提意見,讓我多學習,一起進步。

日常求贊

好了各位,以上就是這篇文章的全部內容了,能看到這裡的人呀,都是人才

創作不易,各位的支援和認可,就是我創作的最大動力,我們下篇文章見

六脈神劍 | 文 【原創】如果本篇部落格有任何錯誤,請批評指教,不勝感激 !