Java集合框架

每博一文案
《殺死一只知更鳥》中有這樣一段話:“你永遠不可能真正地了解一個人,除非你穿上他的鞋子走來走去,站在他的角度思考問題,
可真當你走過他的路時,你連路過都覺得難過,”
世上沒有真正的感同身受,也永遠不會有一模一樣的境遇,
很多時候,你以為看到了全貌,但其實只有冰山一角,永遠不要憑著一點蛛絲馬跡,就隨意評判別人的人生,
在你看不到的角落里,多的是你不知道的事,
不知別人的苦,就別勸人大度;沒有經歷過他人的難,就不要肆意嘲諷,
@
目錄- Java集合框架
- 每博一文案
- 1. 集合簡介
- 1.1 集合和陣列的區別:
- 2. 集合的使用場景
- 3. 集合框架概述
- 4. Java 集合框架的好處
- 5. 實作
- 6. 最后:
1. 集合簡介
早在 Java 2 中之前,Java 就提供了特設類,比如:Dictionary, Vector, Stack, 和 Properties 這些類用來存盤和操作物件組,
雖然這些類都非常有用,但是它們缺少一個核心的,統一的主題,由于這個原因,使用 Vector 類的方式和使用 Properties 類的方式有著很大不同,
集合框架被設計成要滿足以下幾個目標,
- 該框架必須是高性能的,基本集合(動態陣列,鏈表,樹,哈希表)的實作也必須是高效的,
- 該框架允許不同型別的集合,以類似的方式作業,具有高度的互操作性,
- 對一個集合的擴展和適應必須是簡單的,
為此,整個集合框架就圍繞一組標準介面而設計,你可以直接使用這些介面的標準實作,諸如: LinkedList, HashSet, 和 TreeSet 等,除此之外你也可以通過這些介面實作自己的集合,
集合也稱為容器,僅僅是一個物件,多個元素組成一個單元,集合用于存盤、檢索、操作和聚合資料, 通常,他們標識形成自然組的資料項,例如撲克牌(牌集合),郵件檔案夾(字母集合),
1.1 集合和陣列的區別:
陣列:
- 陣列初始化以后,長度就是確定了的,無法修改的,不便于擴展,
- 陣列宣告的型別,就決定了進行元素存盤的型別了,僅僅只能存盤一種資料型別,
- 陣列中提供的屬性和方法少,不便于進行添加,洗掉,插入等操作,且效率不高,同時無法直接獲取存盤元素的實際個數,
- 陣列存盤的資料是有序的,可以重復的,存盤資料的特點單一 ,
集合:
- 集合的長度是可變的,不足時,會自動擴容,便于擴展,
- 集合可以存盤不同的型別(其實集合一般存盤的也是同一種型別),實際上集合存盤的是參考物件的地址值 ,所以集合只能存盤一種型別參考資料型別 ,不可以存盤基本資料型別(可以存盤包裝類),而陣列既可以存盤基本資料型別,也可以存盤參考資料型別,
- 集合提供大量的屬性和方法,便于添加,洗掉,插入,只能獲取到集合中存盤元素的實際個數 size()
- Java 集合類可以用于存盤數量不等的多個物件,還可用于保存具有映射關系的關聯陣列,
2. 集合的使用場景

3. 集合框架概述
一個集合框架是用于表示和操作的集合統一架構,所有集合框架包含以下內容:
-
介面
這些是表示集合的抽象資料型別,介面允許獨立于它們的表示的細節來操縱集合,在面向物件語言中,介面通常形成層次結構,
-
實作
這些是集合介面的具體實作,實質上,它們是可重用的資料結構,
-
演算法
這些方法對實作集合介面的物件執行有用的計算,例如搜索和排序,演算法被認為是多型的: 也就是說,相同的方法可以用于適當的收集介面的許多不同的實作,實質上,演算法是可重用的功能,
Java集合可分為 Collection 和 Map 兩種體系,
- Collection 介面:單例資料,定義了存取一組物件的方法的集合,
- List : 元素有序,可重復的集合,具體的詳細內容可以移步至:?????? Java Collection 介面下的 “ List 集合” 與 “ Set 集合 ”_ChinaRainbowSea的博客-CSDN博客
- Set :元素無序,不可重復的集合,
- Map 介面:雙列資料,保存具有映射關系 ”key-value對“ 的集合,具體的詳細內容可以移步至:?????? Java集合 Map 集合 與 操作集合的工具類: Collections 的詳細說明_ChinaRainbowSea的博客-CSDN博客
Java集合的框架圖:



4. Java 集合框架的好處
Java 集合框架提供了以下好處:
-
減少編程作業量:
通過提供有用的資料結構和演算法,集合框架可以讓您專注于程式的重要部分,而不是使其作業所需的低級“管道”, 通過促進不相關的 API 之間的互操作性,Java 集合框架免除了撰寫配接器物件或轉換代碼來連接 API,
-
提高程式速度和質量:
這個集合框架提供了有用的資料結構和演算法的高性能,高質量的實作,每個介面的各種實作是可以互換的, 所以程式可以通過切換集合實作來輕松地進行調整,由于您已經擺脫了撰寫自己的資料結構的苦差事, 您將有更多時間致力于提高程式的質量和性能,
-
允許不相關的 API 之間的互操作性:
集合介面是 APIs 來回傳遞集合的本地語言,如果我的網路管理 API 提供了一個節點名稱的集合, 并且如果您的 GUI 工具包期望一個列標題的集合,我們的 API 將無縫地互操作,即使它們是獨立撰寫的,
-
減少了學習和使用新的 API 的努力:
許多 API 自然會將輸入的集合作為輸出提供,過去,每個這樣的 API 都有一個小的子 API 來操縱它的集合, 這些專用集合的子 API 之間幾乎沒有一致性,所以你必須從頭學習每一個,使用它們很容易犯錯誤, 隨著標準集合介面的出現,問題就消失了,
-
減少設計新 API 的作業量:
這是以前優勢的另一面,設計師和實施者不必在每次創建依賴于集合的 API 時重新發明輪子; 相反,他們可以使用標準的集合介面,
-
促進軟體重用:
符合標準集合介面的新資料結構本質上是可重用的,對于在實作這些介面的物件上運行的新演算法也是如此,
5. 實作
實作是用于存盤集合的資料物件,本課介紹以下幾種實作:
- 通用實作 :是最常用的實作,專為日常使用而設計,他們在標題為“通用目的實作”的表中進行了總結,
- 特殊實作:專為在特殊情況下使用而設計,并顯示非標準性能特性,使用限制或行為
- 并發實作 :支持高并發,通常以犧牲單執行緒性能為代價,這些實作是
java.util.concurrent軟體包中的一部分 - 封裝器實作 : 與其他型別的實作(通常是通用實作)結合使用,以提供增加或現在的功能
- 方便實作 : 也就是小型實作,通常通過靜態工廠方法提供,為特殊集合(例如單例集)的通用實作提供方便,高效的替代
- 抽象實作 : 便于構建定制實作的骨架實作,稍后在“自定義集合的實作”中進行介紹,一個高級的話題,這不是特別困難,但相對少的人需要做,
通用實作被總結在下表
| 介面 | 哈希表 | 可變陣列 | 平衡二叉樹 | 鏈表 | 哈希表+鏈表 |
|---|---|---|---|---|---|
| Set | HashSet | - | TreeSet | - | LinkedHashSet |
| List | - | ArrayList | - | LinkedList | - |
| Deque | - | ArrayDeque | - | LinkedList | - |
| Map | HashMap | - | TreeMap | - | LinkedHashMap |
| Queue | - | - | - | - | - |
正如你可以從表中看到,Java 集合框架提供了幾種通用的實作 Set, List 以及 Map,
6. 最后:
限于自身水平,其中存在的錯誤,希望大家給予指教,韓信點兵——多多益善,謝謝大家,后會有期,江湖再見!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/542932.html
標籤:其他

