Java 集合

Java 集合

在 Java 編程中,集合框架(java.util 包)是處理一組對象的強大工具。與數組不同,集合提供了更靈活的數據存儲和操作方式。本文將詳細介紹 Java 集合框架的核心接口、常用實現類及其應用場景,幫助你更好地理解和使用集合。


1. 什么是集合?

集合是用于存儲一組對象的容器。Java 集合框架提供了多種數據結構和算法,方便開發者對數據進行增刪改查等操作。集合框架主要分為兩大類:

  1. Collection 接口:用于存儲一組對象。
  2. Map 接口:用于存儲鍵值對(key-value)。

2. 集合框架的核心接口

2.1 Collection 接口

Collection 是集合框架的根接口,它有三個主要的子接口:

  1. List:有序且允許重復元素的集合。
  2. Set:無序且不允許重復元素的集合。
  3. Queue:用于存儲待處理元素的隊列。
2.2 Map 接口

Map 用于存儲鍵值對,鍵(key)是唯一的,值(value)可以重復。常見的實現類有 HashMapTreeMap 等。


3. 集合與數組的對比

特性數組集合
容量固定大小動態擴展
數據類型可以存儲基本類型和引用類型只能存儲引用類型
功能功能有限提供豐富的操作方法
適用場景數據量固定且簡單數據量動態變化且復雜

4. List 集合

List 是有序且允許重復元素的集合,常用的實現類有 ArrayListLinkedList

4.1 ArrayList

ArrayList 是基于動態數組實現的,適合隨機訪問和遍歷。

常用方法

  • add(E e):添加元素。
  • remove(int index):刪除指定位置的元素。
  • get(int index):獲取指定位置的元素。
  • set(int index, E element):修改指定位置的元素。

示例

import java.util.ArrayList;
import java.util.List;public class ArrayListDemo {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("Java");list.add("Python");list.add("C++");System.out.println(list); // 輸出: [Java, Python, C++]}
}
4.2 LinkedList

LinkedList 是基于雙向鏈表實現的,適合頻繁的插入和刪除操作。

常用方法

  • addFirst(E e):在鏈表頭部添加元素。
  • addLast(E e):在鏈表尾部添加元素。
  • removeFirst():刪除鏈表頭部的元素。
  • removeLast():刪除鏈表尾部的元素。

示例

import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args) {LinkedList<String> list = new LinkedList<>();list.add("Java");list.addFirst("Python");list.addLast("C++");System.out.println(list); // 輸出: [Python, Java, C++]}
}

5. Set 集合

Set 是無序且不允許重復元素的集合,常用的實現類有 HashSetTreeSet

5.1 HashSet

HashSet 是基于哈希表實現的,適合快速查找和去重。

常用方法

  • add(E e):添加元素。
  • remove(Object o):刪除元素。
  • contains(Object o):判斷是否包含指定元素。

示例

import java.util.HashSet;
import java.util.Set;public class HashSetDemo {public static void main(String[] args) {Set<String> set = new HashSet<>();set.add("Java");set.add("Python");set.add("Java"); // 重復元素不會被添加System.out.println(set); // 輸出: [Java, Python]}
}
5.2 TreeSet

TreeSet 是基于紅黑樹實現的,元素會按照自然順序或自定義順序排序。

示例

import java.util.TreeSet;
import java.util.Set;public class TreeSetDemo {public static void main(String[] args) {Set<String> set = new TreeSet<>();set.add("Java");set.add("Python");set.add("C++");System.out.println(set); // 輸出: [C++, Java, Python]}
}

6. Map 集合

Map 用于存儲鍵值對,常用的實現類有 HashMapTreeMap

6.1 HashMap

HashMap 是基于哈希表實現的,適合快速查找和插入。

常用方法

  • put(K key, V value):添加鍵值對。
  • get(Object key):根據鍵獲取值。
  • remove(Object key):刪除指定鍵的映射。

示例

import java.util.HashMap;
import java.util.Map;public class HashMapDemo {public static void main(String[] args) {Map<String, String> map = new HashMap<>();map.put("Java", "編程語言");map.put("Python", "腳本語言");System.out.println(map.get("Java")); // 輸出: 編程語言}
}
6.2 TreeMap

TreeMap 是基于紅黑樹實現的,鍵會按照自然順序或自定義順序排序。

示例

import java.util.TreeMap;
import java.util.Map;public class TreeMapDemo {public static void main(String[] args) {Map<String, String> map = new TreeMap<>();map.put("Java", "編程語言");map.put("Python", "腳本語言");map.put("C++", "系統編程語言");System.out.println(map); // 輸出: {C++=系統編程語言, Java=編程語言, Python=腳本語言}}
}

7. 集合的應用場景

  1. 動態數據存儲:當數據量不確定時,使用集合比數組更靈活。
  2. 去重:使用 Set 集合可以輕松實現數據去重。
  3. 鍵值對存儲:使用 Map 集合可以方便地存儲和查找鍵值對。
  4. 排序:使用 TreeSetTreeMap 可以實現元素的自動排序。

8. 小結

  • 集合框架是 Java 中處理一組對象的強大工具,分為 CollectionMap 兩大類。
  • List 是有序且允許重復的集合,常用實現類有 ArrayListLinkedList
  • Set 是無序且不允許重復的集合,常用實現類有 HashSetTreeSet
  • Map 是鍵值對的集合,常用實現類有 HashMapTreeMap

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

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

相關文章

go基本語法

跟Java比較學習。 hello word 示例代碼 test1.go文件&#xff1a; // 包路徑 package main// 導入模塊&#xff0c;下面兩種都行 import ("fmt" ) import "log"// main方法 func main() {log.Print("hello word !!!")fmt.Print("hello …

【Docker】如何在Linux、Windows、MacOS中安裝Docker

Linux安裝Docker 在終端中執行一鍵安裝腳本命令安裝docker sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh | bash -s docker --mirror Aliyun1.1 配置docker鏡像源 在終端執行 一行命令&#xff0c;編輯配置文件 sudo …

2.24力扣-回溯電話號碼的字母組合

17. 電話號碼的字母組合 - 力扣&#xff08;LeetCode&#xff09; class Solution {List<String> ans new LinkedList<>();StringBuilder temp new StringBuilder();public List<String> letterCombinations(String digits) {if(digitsnull || digits.leng…

Cocos Creator Shader入門實戰(一):材質和Effect的了解

引擎版本&#xff1a;3.8.5 環境&#xff1a; Windows 簡介 在Cocos Creator中&#xff0c;游戲炫彩繽紛的效果是借助著色器(Shader)來實現的。 Cocos主要基于OpenGL ES&#xff0c;而Shader的編寫則是在可編程渲染管線中基于修改&#xff1a;頂點著色器(Vertex) 和 片段著色…

akka現有的分布式定時任務框架總結

根據你的需求&#xff0c;以下是一些基于 Akka 實現的分布式定時任務框架&#xff0c;以及相關的 GitHub 項目推薦&#xff1a; 1. Openjob Openjob 是一個基于 Akka 架構的新一代分布式任務調度框架&#xff0c;支持多種定時任務、延時任務、工作流設計&#xff0c;采用無中…

微信小程序地圖map全方位解析

微信小程序地圖map全方位解析 微信小程序的 <map> 組件是一個功能強大的工具&#xff0c;可以實現地圖展示、定位、標注、路徑規劃等多種功能。以下是全方位解析微信小程序地圖組件的知識點&#xff1a; 一、地圖組件基礎 1. 引入 <map> 組件 在頁面的 .wxml 文…

Python的PyTorch+CNN深度學習技術在人臉識別項目中的應用

人臉識別技術是一種基于人臉特征進行身份識別的生物識別技術&#xff0c;其核心原理包括人臉檢測、人臉對齊、特征提取、特征匹配、身份識別。 一、應用場景 安防&#xff1a;門禁、監控。 金融&#xff1a;刷臉支付、身份驗證。 社交&#xff1a;自動標注、美顏。 醫療&am…

《數據庫索引設計與優化》譯本錯誤糾正(1)

今天在學習《數據庫索引設計與優化》第十一章第198頁的時候遇到一個問題&#xff0c;即參數的文字描述與實際不符。我看的是從網絡上找到的譯本&#xff0c;許多喜歡白嫖的朋友可能也會像我一樣遇到這種問題。 可以看到&#xff0c;上面對參數Z的描述是&#xff1a;Z上一次索引…

API測試工具:Swagger vs Postman 2025最新全面對比

隨著微服務架構的普及和云原生應用的激增&#xff0c;高效的 API 開發、測試和文檔管理工具變得越來越重要。在眾多 API 工具中&#xff0c;Swagger 和 Postman 各自以不同的方式解決著 API 開發生命周期中的關鍵問題&#xff0c;本文將從多個維度深入對比這兩款工具&#xff0…

如何查詢SQL Server數據庫服務器的IP地址

如何查詢SQL Server數據庫服務器的IP地址 作為數據庫管理員或開發人員&#xff0c;了解如何查詢SQL Server數據庫服務器的IP地址是一項重要技能。本文將介紹幾種簡單而有效的方法&#xff0c;幫助你輕松獲取這一信息。無論你是新手還是經驗豐富的專業人士&#xff0c;這些方法…

centos 7 安裝python3 及pycharm遠程連接方法

安裝openssl 使用pip3安裝 virtualenv的時候會提示WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 這是因為缺少openssl 2.0以上版本 解決辦法&#xff1a; 一、先確認版本 openssl version 二、安…

AI人工智能之機器學習sklearn-數據預處理和劃分數據集

1、概要 本篇學習AI人工智能之機器學習sklearn數據預處理和劃分數據集&#xff0c;從代碼層面講述如何進行數據的預處理和數據集劃分。 2、簡介 本片講述數據預處理的標準化處理、歸一化處理&#xff0c;以常用的兩個類為例 標準化處理類 StandardScaler歸一化處理類 MinMax…

智能硬件-01智能停車場

行業背景 隨著現代人們生活水平的提高&#xff0c;私家車輛在不斷增加&#xff0c;小區將面臨著臨時車用戶要多于固定車用戶的窘境&#xff0c;尤其是在早晚高峰時段車輛出入擁堵&#xff0c;對小區的車輛管理難度越來越大&#xff0c;對停車場收費員的崗位要求越來越高&#…

定長內存池的實現、測試及錯誤分析

背景 C/C 申請內存使用的是 malloc &#xff0c;malloc 其實就是一個大眾貨&#xff0c;什么場景下都可以用&#xff0c;但是什么場景下都可以用就意味著什么場景下都不會有很高的性能。 定長內存池解決固定大小的內存申請釋放需求&#xff0c; 性能達到極致&#xff0c;不考…

vue3 下載文件 responseType-blob 或者 a標簽

在 Vue 3 中&#xff0c;你可以使用 axios 或 fetch 來下載文件&#xff0c;并將 responseType 設置為 blob 以處理二進制數據。以下是一個使用 axios 的示例&#xff1a; 使用 axios 下載文件 首先&#xff0c;確保你已經安裝了 axios&#xff1a; npm install axios然后在你…

Search API:讓數據獲取變得簡單高效的搜索引擎代理商

Search API&#xff1a;讓數據獲取變得簡單高效的搜索引擎代理商 在當今數字化時代&#xff0c;數據驅動的決策變得越來越重要&#xff0c;而獲取精準、實時的數據是眾多企業、研究機構和開發者的核心需求。然而&#xff0c;直接爬取搜索引擎或行業資訊網站可能會遇到諸多挑戰&…

halcon三維對象處理例程總結(二)

目錄 一、intersect_plane_object_model_3d二、interactive_intersection三、measure_plant四、moments_object_model_3d五、projective_trans_object_model_3d六、read_object_model_3d_generic_ascii一、intersect_plane_object_model_3d 計算三維物體模型與平面之間的相交部…

基于 Python 的項目管理系統開發

基于 Python 的項目管理系統開發 一、引言 在當今快節奏的工作環境中&#xff0c;有效的項目管理對于項目的成功至關重要。借助信息技術手段開發項目管理系統&#xff0c;能夠顯著提升項目管理的效率和質量。Python 作為一種功能強大、易于學習且具有豐富庫支持的編程語言&…

2月24(信息差)

&#x1f30d;“任意舞蹈任意學”&#xff01;宇樹機器人又進化了 傳Meta有意合作拋出橄欖枝 &#x1f384;兩部門&#xff1a;深入推進公路沿線充電基礎設施建設 推動大功率充電技術標準應用 ?小米15 Ultra、小米SU7 Ultra定檔2月27日 雷軍宣布&#xff1a;向超高端進發 1.…

mysql 遷移到人大金倉數據庫

我是在windows上安裝了客戶端工具 運行數據庫遷移工具 打開 在瀏覽器輸入http://localhost:54523/ 賬號密碼都是kingbase 添加mysql源數據庫連接 添加人大金倉目標數據庫 添加好的兩個數據庫連接 新建遷移任務 選擇數據庫 全選 遷移中 如果整體遷移不過去可以單個單個或者幾個…