Java集合的總體框架相關知識總結

一、集合概述

數組其實就是一個集合。集合實際上就是一個容器。可以來容納其它的數據。

二、集合在開發中的應用

集合是一個容器,是一個載體,可以一次容納多個對象。在實際開發中,假設連接數據庫,數據庫當中有10條記錄,那麼假設把這10條記錄查詢出來,在Java程序中會將10條數據封裝成10個Java對象,然後將10個Java對象放到某一個集合當中,將集合傳到前端,然後遍歷集合,將一個數據一個數據展現出來

三、集合存儲的數據

  •  Java集合中實際存放的隻是對象的引用每個集合元素都是一個引用變量,實際內容都放在堆內存或者方法區裡面,但是基本數據類型是在棧內存上分配空間的,棧上的數據隨時就會被收回的。
  • 可以通過包裝類把基本類型轉為對象類型,存放引用就可以解決這個問題。更方便的,由於有瞭自動拆箱和裝箱功能基本數據類型和其對應對象(包裝類)之間的轉換變得很方便,想把基本數據類型存入集合中,直接存就可以瞭,系統會自動將其裝箱成封裝類,然後加入到集合當中

在這裡插入圖片描述

註意:

  • 集合在Java中本身是一個容器,是一個對象
  • 集合中任何時候存儲的都是“引用”
  • 集合裡面存儲的是對象內存地址
  • 集合裡面可以套集合
  • 集合也是一個對象,也有內存地址

在這裡插入圖片描述

在Java中每一個不同的集合,底層會對應不同的數據結構。往不同的集合中存儲元素,等於將數據放到瞭不同的數據結構當中。什麼是數據結構?數據存儲的結構就是數據結構。不同的數據結構,數據存儲方式不同。

比如

  • 數組
  • 二叉樹
  • 鏈表
  • 哈希表…

以上這些都是常用的數據結構

你往集合c1中存放數據,可能是放到數組上瞭。
你往集合c2中存放數據,可能是放到二叉樹上瞭。

你使用不同的集合等同於使用瞭不同的數據結構。new不同的對象,就是使用不同的數據結構。如果對集合用法不瞭解,多去查JDK的API和百度

  • new ArrayList(); 創建一個集合,底層是數組
  • new LinkedList(); 創建一盒集合對象,底層是鏈表
  • new TreeSet(); 創建一個集合對象,底層是二叉樹

四、集合的包

所有的集合類和集合接口都在Java.util包下,Java.util.*;

五、集合的兩大類

  • 一類是單個方式存儲元素,單個方式存儲元素,這一類集合中超級父接口:Java.util.Collection;
  • 一類是以鍵值對的方式存儲元素,以鍵值對的方式存儲元素,這一類集合中超級父接口:Java.util.Map;

Iterrator it = “Collection 對象”.iterator();
it是迭代器對象

在這裡插入圖片描述

synchronized

  • 修飾一個代碼塊,被修飾的代碼塊稱為同步語句塊,其作用的范圍是大括號{}括起來的代碼,作用的對象是調用這個代碼塊的對象;
  • 修飾一個方法,被修飾的方法稱為同步方法,其作用的范圍是整個方法,作用的對象是調用這個方法的對象;
  • 修改一個靜態的方法,其作用的范圍是整個靜態方法,作用的對象是這個類的所有對象;
  • 修改一個類,其作用的范圍是synchronized後面括號括起來的部分,作用主的對象是這個類的所有對象。

Iterable是接口

  • 可迭代的,可遍歷的,所有集合元素都是可迭代的,可遍歷的
  • 屬性:iterator()

Collection是接口

  •  collection繼承於Iterable
  • 所有集合繼承Iterable的含義是:所有集合都是可迭代的

Iterator

  • Iterator與Collection是關聯關系
  • 集合的迭代器對象
  • 屬性:hashNext(),next(),remove()…

List是接口

  • List繼承於Collectionlist
  • 集合元素的特點:有序可重復,存儲的元素有下標
  • 有序實際上是說存進去是這個順序,取出來還是這個順序,這裡的順序不是按照大小排序
  • 有序是因為list集合都有下標,下標從0開始,以1遞增

ArrayList

  • ArrayList繼承於ListArrayList
  • 集合底層采用瞭數組這種數據結構
  • ArrayList集合是非線程安全的

LinkedList

  • LinkedList繼承於List
  • LinkedList集合底層采用瞭雙向鏈表數據結構

Vector

  • Vector繼承於List
  • Vector集合底層采用瞭數組這種數據結構
  • Vector集合是線程安全的
  • Vector所有的方法都有syndronized關鍵詞修飾,所以線程安全,但是效率較低,Vector用的少

Set是接口

  • Set繼承於Collection
  • Set集合存儲元素特點:無序不可重復
  • 無序表示存進去是這個順序,取出來就不一定是這個順序瞭
  • Set集合中元素沒有下
  • 標Set集合中的元素不能重復

HashSet

  • HashSet繼承於Set
  • HashSet集合在new的時候,底層實際上new瞭一個HashMap集合
  • 向HashSet集合中存儲元素,實際上是存儲到瞭HashMap集合中
  • HashMap集合是一個哈希表數據結構

SortedSet是接口

-SortedSet集合存儲元素的特點:無序不可重復,但是放在SortedSet集合中的元素可以自動排序
SortedSet是可排序集合。放到該集合中的元素是自動按照大小順序排序

TreeSet

  • TreeSet繼承於SortedSetTreeSet
  • 集合底層實際上是TreeMap
  • new TreeSet集合的時候,底層實際上new瞭一個TreeMap集合
  • 往TreeSet集合中放數據的時候,實際上是將數據放到TreeMap集合中瞭
  • TreeMap集合底層采用瞭二叉樹數據結構

Map是接口

  • Map集合和Collection集合沒有關系
  • Map集合以key和value的這種鍵值對的存儲方式存儲元素
  • key和value都是存儲Java對象的內存地址
  • 所有Map集合的key特點:無序不重復
  • Map集合的key和Set集合存儲元素特點相同

HashMap

  • HashMap繼承於Map
  • HashMap集合底層是哈希表數據結構
  • 非線程安全的
  • Hashable
  • Hashable集合底層也是哈希表數據結
  • 構線程安全,其中所有方法都帶有synchronized關鍵字,效率低

SortedMap是接口

  • SortedMap集合存儲元素特點:無序不可重復
  • 放在SortedMap集合key部分的元素會自動按照大小順序排序
  • 稱為可排序的集合

 Properties

  • Properties繼承Hashable,另外Properties存儲元素的時候也是采用key和value的形式存儲k
  • ey和value隻支持String類型,不支持其他類型
  • Properties被稱為屬性類

TreeMap

  • TreeMap集合底層的數據結構是一個二叉樹

到此這篇關於Java集合的總體框架相關知識總結的文章就介紹到這瞭,更多相關Java集合框架內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: