JavaSE核心知識點03高級特性03-01(集合框架)

🤟致敬讀者

  • 🟩感謝閱讀🟦笑口常開🟪生日快樂?早點睡覺

📘博主相關

  • 🟧博主信息🟨博客首頁🟫專欄推薦🟥活動信息

文章目錄

    • JavaSE核心知識點03高級特性03-01(集合框架)
    • 一、什么是集合框架(Collection Framework)?
      • 為什么需要集合框架?
    • 二、集合框架的核心結構
      • 1. **Collection 接口(單列集合)**
      • 2. **Map 接口(雙列集合)**
    • 三、核心接口詳解與代碼示例
      • 1. **List 接口**
        • 特點:有序、可重復、可通過索引訪問
      • 2. **Set 接口**
        • 特點:無序、不可重復(通過`equals()`和`hashCode()`判斷)
      • 3. **Map 接口**
        • 特點:鍵值對存儲,Key唯一
    • 四、集合框架的通用操作
      • 1. **遍歷集合**
      • 2. **集合工具類 `Collections`**
    • 五、如何選擇集合類?
    • 六、常見面試問題
    • 七、學習路線建議


📃文章前言

  • 🔷文章均為學習工作中整理的筆記。
  • 🔶如有錯誤請指正,共同學習進步。

在這里插入圖片描述

JavaSE核心知識點03高級特性03-01(集合框架)

作為Java集合框架的入門學習指南,我將從基礎概念、核心接口、常用實現類、使用場景到代碼示例,逐步為你講解。內容會盡量通俗易懂,配有代碼示例和對比表格,幫助你快速掌握。


一、什么是集合框架(Collection Framework)?

集合框架 是Java中用于存儲和操作一組對象的統一架構。它提供了一套標準化的接口和實現類,解決了數組的局限性(如固定長度、類型單一、操作復雜等)。

為什么需要集合框架?

  • 動態擴容:無需手動管理容量
  • 類型安全:通過泛型確保數據類型一致
  • 高性能操作:提供豐富的API(增刪改查、排序、遍歷等)
  • 統一標準:所有集合類遵循相同的接口規范

二、集合框架的核心結構

Java集合框架主要分為兩大類:單列集合(Collection)雙列集合(Map)

1. Collection 接口(單列集合)

  • List:有序、可重復
    • 常用實現類:ArrayList, LinkedList, Vector
  • Set:無序、不可重復
    • 常用實現類:HashSet, LinkedHashSet, TreeSet
  • Queue:隊列,先進先出(FIFO)
    • 常用實現類:LinkedList, PriorityQueue

2. Map 接口(雙列集合)

  • 鍵值對(Key-Value)存儲,Key不可重復
  • 常用實現類:HashMap, LinkedHashMap, TreeMap, Hashtable

三、核心接口詳解與代碼示例

1. List 接口

特點:有序、可重復、可通過索引訪問

常用實現類對比

實現類數據結構特點
ArrayList動態數組查詢快,增刪慢(需擴容或移動元素)
LinkedList雙向鏈表增刪快,查詢慢(需遍歷節點)
Vector同步的動態數組線程安全,性能較低(已逐漸被淘汰)

示例代碼

// ArrayList示例
List<String> arrayList = new ArrayList<>();
arrayList.add("Apple");
arrayList.add("Banana");
arrayList.add(1, "Orange"); // 在索引1插入元素
System.out.println(arrayList); // [Apple, Orange, Banana]// LinkedList示例
List<Integer> linkedList = new LinkedList<>();
linkedList.add(10);
linkedList.addFirst(5); // 頭部插入
linkedList.addLast(20); // 尾部插入
System.out.println(linkedList.get(1)); // 10

2. Set 接口

特點:無序、不可重復(通過equals()hashCode()判斷)

常用實現類對比

實現類數據結構特點
HashSet哈希表最快查詢,無順序
LinkedHashSet哈希表+鏈表保留插入順序
TreeSet紅黑樹自然排序或自定義排序

示例代碼

// HashSet示例
Set<String> hashSet = new HashSet<>();
hashSet.add("Java");
hashSet.add("Python");
hashSet.add("Java"); // 重復元素不會被添加
System.out.println(hashSet); // 輸出順序不確定,如 [Java, Python]// TreeSet示例(自然排序)
Set<Integer> treeSet = new TreeSet<>();
treeSet.add(5);
treeSet.add(2);
treeSet.add(8);
System.out.println(treeSet); // [2, 5, 8]

3. Map 接口

特點:鍵值對存儲,Key唯一

常用實現類對比

實現類數據結構特點
HashMap哈希表最快查詢,無順序(允許null鍵值)
LinkedHashMap哈希表+鏈表保留插入順序或訪問順序
TreeMap紅黑樹按鍵自然排序或自定義排序
Hashtable哈希表線程安全,不允許null鍵值(已過時)

示例代碼

// HashMap示例
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("Alice", 25);
hashMap.put("Bob", 30);
hashMap.put("Alice", 26); // 覆蓋原有值
System.out.println(hashMap.get("Bob")); // 30// TreeMap示例(按鍵排序)
Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("Orange", 5);
treeMap.put("Apple", 3);
System.out.println(treeMap); // {Apple=3, Orange=5}

四、集合框架的通用操作

1. 遍歷集合

  • for-each循環(推薦):

    List<String> list = Arrays.asList("A", "B", "C");
    for (String s : list) {System.out.println(s);
    }
    
  • 迭代器(Iterator)

    Iterator<String> it = list.iterator();
    while(it.hasNext()) {String s = it.next();if (s.equals("B")) it.remove(); // 安全刪除元素
    }
    

2. 集合工具類 Collections

提供靜態方法操作集合:

List<Integer> numbers = new ArrayList<>(Arrays.asList(3,1,4,2));
Collections.sort(numbers); // 排序 → [1,2,3,4]
Collections.reverse(numbers); // 反轉 → [4,3,2,1]
Collections.shuffle(numbers); // 隨機打亂

五、如何選擇集合類?

根據需求選擇最合適的集合:

場景推薦實現類
快速隨機訪問ArrayList
頻繁插入刪除LinkedList
去重且無需排序HashSet
去重且保留插入順序LinkedHashSet
需要排序TreeSetTreeMap
鍵值對存儲HashMap(最常用)
線程安全場景ConcurrentHashMap

六、常見面試問題

  1. ArrayList和LinkedList的區別?

    • ArrayList基于動態數組,適合隨機訪問;LinkedList基于鏈表,適合頻繁增刪。
  2. HashMap的工作原理?

    • 通過哈希函數計算鍵的哈希值,存儲到對應桶(數組位置),解決哈希沖突使用鏈表或紅黑樹(JDK8+)。
  3. 如何保證集合的線程安全?

    • 使用Collections.synchronizedList()包裝,或選擇ConcurrentHashMapCopyOnWriteArrayList等并發集合。

七、學習路線建議

  1. 基礎階段:掌握ArrayListHashMapHashSet的常用操作
  2. 進階階段:理解底層數據結構(如哈希表、紅黑樹)、泛型、迭代器
  3. 高級階段:學習線程安全集合、性能優化、Stream API操作集合

練習建議

  • 實現一個簡單的學生管理系統(用集合存儲學生信息)
  • 統計一篇文章中每個單詞出現的次數(用HashMap
  • 比較不同集合在10萬次操作下的性能差異

如果有具體問題或需要更多代碼示例,歡迎隨時提問!



📜文末寄語

  • 🟠關注我,獲取更多內容。
  • 🟡技術動態、實戰教程、問題解決方案等內容持續更新中。
  • 🟢《全棧知識庫》技術交流和分享社區,集結全棧各領域開發者,期待你的加入。
  • 🔵?加入開發者的《專屬社群》,分享交流,技術之路不再孤獨,一起變強。
  • 🟣點擊下方名片獲取更多內容🍭🍭🍭👇

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81935.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81935.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81935.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

日志分析-IIS日志分析

環境準備 https://xj.edisec.net/challenges/115 題目要求 windows系統中才有的IIS服務 既然是windows平臺&#xff0c;當然需要rdp登錄&#xff0c;在ssh登錄失敗 解題過程 phpstudy--2018站點日志.(.log文件)所在路徑&#xff0c;提供絕對路徑 Windows服務的日志一般有固定…

一、web安全基礎入門

1、Windows命令 文件和目錄操作 dir&#xff1a;列出當前目錄下的文件和子目錄。cd&#xff1a;切換目錄&#xff0c;例如 cd C:\Users 切換到C盤的Users目錄。md 或 mkdir&#xff1a;創建新目錄&#xff0c;如 md testdir。rd 或 rmdir&#xff1a;刪除空目錄&#xff0c;例…

動態規劃應用場景 + 代表題目清單(模板加上套路加上題單)

1. 序列型DP&#xff08;Sequence DP&#xff09; ? 應用場景 單個或多個序列&#xff08;數組/字符串&#xff09;&#xff0c;求最優子結構。 常見問題&#xff1a;最長遞增子序列、最長公共子序列、回文子序列。 &#x1f9e0; 套路總結 單序列&#xff1a;dp[i] max(…

Linux iSCSI存儲共享實驗指南

實驗介紹 1、在Linux平臺上通過iSCSI協議實現IP-SAN存儲共享 2、掌握存儲導出(export)和存儲導入(import)的配置方法 3、學習iSCSI存儲的發現、連接、斷開和管理操作 1、實驗環境 兩臺同網段的Linux虛擬機&#xff08;無需物理交換機&#xff09; 操作系統&#xff1a;Lin…

從 Docker 到 runC

從 Docker 到 runC:容器底層原理詳解 目錄 1. Docker 與 runC 的關系 2. Docker 的核心組件 3. runC 的核心功能 4. 實戰示例:從 Docker 到 runC 4.1 示例場景:運行一個簡單容器 4.2 Docker 底層調用 runC 的流程 4.3 查看 runC 的調用 4.4 直接調用 runC 創建容器 …

使用Python在PowerPoint中插入形狀(Shape)

在進行演示文稿設計時&#xff0c;形狀&#xff08;Shape&#xff09;不僅可以增強視覺效果&#xff0c;還可以用于展示流程圖、標注、數據圖示等。借助Python&#xff0c;我們可以通過代碼快速批量地在PPT中添加各種形狀&#xff0c;提升設計效率。本文將介紹如何使用Python向…

Windows系統下MySQL 8.4.5壓縮包安裝詳細教程

一、MySQL 8.4.5新特性概覽 相較于舊版本&#xff0c;MySQL 8.4.5在性能與功能上實現了顯著提升&#xff1a; 性能優化&#xff1a;官方測試顯示&#xff0c;在高并發場景下&#xff0c;其讀寫性能較5.7版本提升近2倍&#xff0c;尤其在處理熱點數據競爭問題時表現更為出色。…

深度解析Vue項目Webpack打包分包策略 從基礎配置到高級優化,全面掌握性能優化核心技巧

深度解析Vue項目Webpack打包分包策略 從基礎配置到高級優化&#xff0c;全面掌握性能優化核心技巧 一、分包核心價值與基本原理 1.1 為什么需要分包 首屏加載優化&#xff1a;減少主包體積&#xff0c;提升TTI&#xff08;Time to Interactive&#xff09;緩存利用率提升&am…

【昇騰開發者訓練營:Dify大模型部署實戰】MindIE + Dify + DeepSeek + Embedding模型 + Rerank模型

文章目錄 部署 Dify1. Dify 適配 ARM2. 安裝 docker3. 啟動 Dify MindIEDify 實操手冊1. 基礎環境搭建1.1 環境檢查1.2 下載模型權重1.3 獲取MindIE鏡像 2. 啟動容器3. 純模型推理測試3.1 純模型對話測試3.2 性能測試 4. 服務化部署4.1 MindIE 配置4.2 MindIE 服務化4.3 發起測…

塔能高溫冰蓄冷技術:工廠能耗精準節能的創新之路

在工廠的能耗構成中&#xff0c;制冷系統是重要的耗能環節。傳統的水蓄冷和冰蓄冷技術在實際應用中存在一些局限性&#xff0c;難以滿足工廠對節能和成本控制的更高要求。塔能科技的高溫冰蓄冷技術&#xff0c;憑借其獨特的優勢&#xff0c;為工廠能耗精準節能提供了創新的解決…

通過現代數學語言重構《道德經》核心概念體系,形成一個兼具形式化與啟發性的理論框架

以下是對《道德經》的數學轉述嘗試&#xff0c;通過現代數學語言重構其核心概念&#xff0c;形成一個兼具形式化與啟發性的理論框架&#xff1a; 0. 基礎公理體系 定義&#xff1a; 《道德經》是一個動態宇宙模型 U(D,V,Φ)&#xff0c;其中&#xff1a; D 為“道”的無限維…

SQLMesh Typed Macros:讓SQL宏更強大、更安全、更易維護

在SQL開發中&#xff0c;宏&#xff08;Macros&#xff09;是一種強大的工具&#xff0c;可以封裝重復邏輯&#xff0c;提高代碼復用性。然而&#xff0c;傳統的SQL宏往往缺乏類型安全&#xff0c;容易導致運行時錯誤&#xff0c;且難以維護。SQLMesh 引入了 Typed Macros&…

5月23日day34打卡

GPU訓練及類的call方法 知識點回歸&#xff1a; CPU性能的查看&#xff1a;看架構代際、核心數、線程數GPU性能的查看&#xff1a;看顯存、看級別、看架構代際GPU訓練的方法&#xff1a;數據和模型移動到GPU device上類的call方法&#xff1a;為什么定義前向傳播時可以直接寫作…

集群、容器云與裸金屬服務器的全面對比分析

文章目錄 引言 集群 2.1 定義 2.2 特點 2.3 應用場景 容器云 3.1 定義 3.2 核心功能 3.3 應用場景 裸金屬 4.1 定義 4.2 特點 4.3 應用場景 三者的區別 5.1 架構與性能 5.2 管理與運維 5.3 成本與靈活性 總結 1. 引言 在云計算和數據中心領域&#xff0c;50…

Vscode +Keil Assistant編譯報錯處理

Vscode Keil Assistant編譯報錯處理 1.報錯圖片內容 所在位置 行:1 字符: 25 chcp.com 65001 -Command & c:\Users\92170.vscode\extensions\cl.keil-a … ~ 不允許使用與號(&)。& 運算符是為將來使用而保留的&#xff1b;請用雙引號將與號引起來(“&”)&…

Java實現中文金額轉換

概述 話不多說&#xff0c;直接上代碼 代碼 /*** Author: hweiyu* Description: TODO* Date: 2025/5/23 11:33*/ import java.math.BigDecimal; import java.util.Scanner;public class AmountToChinese {// 中文數字字符private static final String[] NUMBERS {"零&…

Oracle 的 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH 命令

Oracle 的ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH 命令 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH 是 Oracle Data Guard 環境中用于停止恢復過程并準備備用數據庫切換為主庫的關鍵命令。 命令用途 該命令主要用于以下場景&#xff1a; 故…

Java 依賴管理工具:使用 Sonatype Nexus 管理項目依賴

Java 依賴管理工具&#xff1a;使用 Sonatype Nexus 管理項目依賴 在 Java 開發領域&#xff0c;依賴管理是項目構建和維護過程中的關鍵環節。Sonatype Nexus 作為一個功能強大的依賴管理工具&#xff0c;能夠有效地幫助我們管理項目的各種依賴&#xff0c;提高開發效率并降低…

編譯原理 期末速成

一、基本概念 1. 翻譯程序 vs 編譯程序 翻譯程序的三種方式 編譯&#xff1a;將高級語言編寫的源程序翻譯成等價的機器語言或匯編語言。&#xff08;生成文件&#xff0c;等價&#xff09;解釋&#xff1a;將高級語言編寫的源程序翻譯一句執行一句&#xff0c;不生成目標文件…

Pysnmp使用指南

1. 簡介 pysnmp 是一個純 Python 實現的 SNMP&#xff08;Simple Network Management Protocol&#xff09;庫&#xff0c;支持 SNMPv1、SNMPv2c 和 SNMPv3 協議。用于&#xff1a; 查詢&#xff08;GET&#xff09;和修改&#xff08;SET&#xff09;網絡設備的管理信息。遍…