Java集合就像一種容器,能夠把多個對象(其實是對象的引用,但習慣上都稱對象)「丟進」該容器中。java
Set:表明無序、不可重複的集合;
List:表明有序、重複的集合;
Map:表明具備映射關係的集合
Queue:表明一種隊列集合實現;(Java 5增長)數組
一、長度:
數組:只能保存定長的數據,長度在初始化時指定;
集合:可保存數量不肯定的數據。
二、保存數據類型:
數組:基本類型和對象。
集合:只能保存對象(實際保存對象的引用變量),基本數據類型變量需轉換爲對應的包裝類才能放入集合類中。框架
這個主要是看類圖,若是你結合類圖,仔細看過源碼,那麼這些理解都不是問題。由於你只是看教程,缺乏第一手資料,缺乏細節,反而老是更加不理解。學習
https://upload-images.jianshu.io/upload_images/2993097-d92fdc13030b2126.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/650
圖片來源:Java集合框架學習-----Collection接口概述 - 簡書 https://www.jianshu.com/p/b878a4e1c762spa
接口:用虛線框表示:
類:用實線框表示;
接口和接口之間的實現:用虛線和空白三角表示;
類與類之間,以及類與接口之間的實現:用實現線和空白三角
produce關係-即之間有關係,但並不是直接實現:虛線和實心三角對象
Set 接口:
List 接口:
Queue接口:(隊列:先進先出)繼承
一、雖然老是將Map和List 以及Set 一塊兒說,但實際上Map和List 以及Set並非同級關係。List 和Set是Collection的子接口;Map並非,Map並不屬於Collection接口系列。
二、Map和Collection的關係在於Map的實現上。由於Map的全部key實際是一個Set對象,Map的全部value也是一個Collection接口對象。(可看Map接口源碼)
三、其餘,並無太多關係。教程
元素不容許重複,無序接口
HashSet:
LinkedHashSet
TreeSet
EnumSet隊列
有序
ArrayList:
LinkedList:
Vector
Stack
隊列:先進先出
PriorityQueue
Deque(子接口)
ArrayDeque
保存具備映射關係的數據;
key和value均可以是任何引用類型的數據。
Map的key不容許重複(任何兩個key比較老是返回false)
實質:全部key是一個Set集合,全部value幾乎是一個List集合
HashTable
HashMap:
LinkedHashMap
TreeMap:
被稱做迭代器,是Collection接口的父接口。
主要用於遍歷Collection集合中的元素。
修改迭代變量的值對集合元素自己沒有任何影響。
使用Iterator對集合元素進行迭代時;
Iterator並非把集合元素自己傳給了迭代變量,而是把集合元素的值傳給了迭代變量(就如同參數傳遞是值傳遞,基本數據類型傳遞的是值,引用類型傳遞的僅僅是對象的引用變量)
因此除非實際修改該對象指向的內容,不然不會對集合產生影響。
具體能夠參考:由淺入深理解java集合(一)——集合框架 Collection、Map - 簡書 https://www.jianshu.com/p/589d58033841
本文參考:由淺入深理解java集合(一)——集合框架 Collection、Map - 簡書 https://www.jianshu.com/p/589d58033841(這個系列的全部文章)