🔥史上最全的Java容器集合之入門

NO IMAGE

前言

文本已收錄至我的GitHub倉庫,歡迎Star:github.com/bin39232820…
種一棵樹最好的時間是十年前,其次是現在
我知道很多人不玩qq了,但是懷舊一下,歡迎加入六脈神劍Java菜鳥學習群,群聊號碼:549684836 鼓勵大家在技術的路上寫博客

絮叨

不知不覺,自己也寫了十來篇文章,在這裡謝謝大家的關注,我會繼續加油。 接下來講Java的容器,至於能寫多少篇,寫多詳細,看看吧,爭取深一點。

零基礎入門不需要閱讀源碼,面試前一定要回顧和閱讀源碼(這是面試必考的知識點)!

集合的由來

通常,我們的Java程序需要根據程序運行時才知道創建了多少個對象。但若非程序運行,程序開發階段,我們根本不知道到底需要多少個數量的對象,甚至不知道它的準確類型。為了滿足這些常規的編程需要,我們要求能在任何時候,任何地點創建任意數量的對象,而這些對象用什麼來容納呢?我們首先想到了數組,但是!數組只能存放同一類型的數據,而且其長度是固定的,那怎麼辦了?集合便應運而生了。

集合和數組的區別:

🔥史上最全的Java容器集合之入門

集合圖

🔥史上最全的Java容器集合之入門

其實最主要還是講我圈的這幾個

Java.util下面的包 讓我們從上往下看吧,這篇就講幾個上層接口吧 具體的容器到時候一個個講

🔥史上最全的Java容器集合之入門

🔥史上最全的Java容器集合之入門

Iterator迭代器

我們可以發現一個特點,上述所有的集合類,除了map系列的集合,即左邊的集合都實現了Iterator接口

它是Java集合的頂層接口(不包括map系列的集合,Map接口是map系列集合的頂層接口)

  Object next():返回迭代器剛越過的元素的引用,返回值是Object,需要強制轉換成自己需要的類型。

  boolean hasNext():判斷容器內是否還有可供訪問的元素。

  void remove():刪除迭代器剛越過的元素。

所以除了map系列的集合,我麼都能通過迭代器來對集合中的元素進行遍歷。

注意:我們可以在源碼中追溯到集合的頂層接口,比如Collection接口,可以看到它繼承的是類Iterable

🔥史上最全的Java容器集合之入門

然後Iterable中有Iterator

🔥史上最全的Java容器集合之入門

我們來具體聊聊 Iterator

🔥史上最全的Java容器集合之入門

總共4個方法

  • 判斷下個迭代器是否還有下一個元素
  • 返回下一個元素的值,並且把自身offset移動下一位
  • 第三個方法 這個可以刪除用這個迭代器集合中的元素(注意如果刪除之後還是前面獲得的迭代器,你會發現原來的迭代器還是沒變,得重新獲得刪除元素之後的迭代器)
  • 1.8的新方法 可以直接遍歷迭代器剩下的元素,如果從最開始的話就是遍歷所有的迭代器(1.8的函數式編程,寫的蠻爽,後面博客會補)

所以我想說的是所有的集合都有迭代器可以用來遍歷哈 它是所有集合的最上級

ListIterator

為什麼要講它呢,本來沒打算講,但是想了一下,要寫就寫全點吧

🔥史上最全的Java容器集合之入門

ListIterator 是 Iterator 的子接口,ListIterator 不僅可以向後迭代,也可以向前迭代。相比 Iterator,

  • 它增加了以下這些方法:
  • boolean hasPrevious();
  • E previous();
  • int nextIndex();
  • int previousIndex();
  • void set(E e);
  • void add(E e);

其實就是 增加可以向前一個下標的操作。大家可以寫個測試方法自己試試就知道了 還可以對迭代出來的元素進行替換set()方法

Collection接口介紹

Collection的作用就是規定了一個集合有哪些基本的操作。

🔥史上最全的Java容器集合之入門

這裡主要是插入數據,清空數據,是否包含,是否相等,集合裡的數據個數和轉化成熟組這幾種操作。

比如:

  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) 返回一個包含集合中所有元素的數組,運行時根據集合元素的類型指定數組的類型
  

🔥史上最全的Java容器集合之入門

結尾

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

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

日常求贊

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

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

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

相關文章

SpringBoot如何優雅的校驗參數

數據結構棧

說說Flutter中的RepaintBoundary

如果有人再問你怎麼實現分佈式延時消息,這篇文章丟給他