Java集合框架定義以及整體結構

目錄

  • 一、Java集合框架
    • 1.1 什么是java集合框架
    • 1.2 集合與數組
  • 二、集合框架具體內容
    • 2.1 整體框架
    • 2.2 遺留類和遺留接口
    • 1.3 集合框架設計特點
  • 參考資料

一、Java集合框架

1.1 什么是java集合框架

Java集合框架(Java Collections Framework)是Java平臺提供的一組用于存儲、操作和處理對象集合的類和接口的集合。它提供了一套通用的接口和實現類,使得在處理對象集合時更加方便、高效和靈活。

java集合框架重要發展歷程主要如下:

  • Java SE 2 首次引入 java 集合框架
  • Java SE 5 引入泛型
  • Java8中引入了 lambda 表達式以及接口中的默認方法

1.2 集合與數組

事實上,由于集合是一個對象,并且給定一個對象是可擴展的,您可以在JDK提供的大多數集合上添加您需要的任何操作。用數組做這件事是不可能的,因為數組不是Java中的對象。

集合能為您做什么,而數組不能?

  • 集合跟蹤它包含的元素的數量

  • 集合的容量不受限制:您可以在集合中添加(幾乎)任意數量的元素

  • 集合可以控制您可以在其中存儲哪些元素。例如,您可以防止添加空元素

  • 可以查詢集合是否存在給定元素

  • 集合提供與另一個集合相交或合并等操作。

二、集合框架具體內容

ava的集合類定義在java.util包中,支持泛型,主要提供了3種集合類,包括ListSetMap

Java集合使用統一的Iterator遍歷,盡量不要使用遺留接口。

java.util (Java SE 21 & JDK 21) (oracle.com)

Collections Framework Overview (Java SE 21 & JDK 21) (oracle.com)

2.1 整體框架

請添加圖片描述

從集合框架圖可以看到,java 集合框架主要包括兩種類型的容器

  • 集合(Collection): 存儲一組元素,元素之間沒有任何關系
  • 映射(map): 存儲鍵值映射

集合框架是一個用來代表和操縱集合的統一架構。所有的集合框架都包含如下內容:

  • 接口:集合的抽象數據類型。例如 Collection、List、Set、Map 等。之所以定義多個接口,是為了以不同的方式操作集合對象
  • 實現類:集合接口的具體實現。從本質上講,它們是可重復使用的數據結構,例如:ArrayList、LinkedList、HashSet、HashMap。
  • 算法:實現集合接口的對象里的方法執行的一些有用的計算。例如搜索和排序,這些算法實現了多態,那是因為相同的方法可以在相似的接口上有著不同的實現。
InterfaceHash TableResizable ArrayBalanced TreeLinked ListHash Table + Linked List
SetHashSetTreeSetLinkedHashSet
ListArrayListLinkedList
Queue, DequeArrayDequeLinkedList
MapHashMapTreeMapLinkedHashMap

2.2 遺留類和遺留接口

需要注意的是,由于Java的集合設計非常久遠,中間經歷過大規模改進,我們要注意到有一小部分集合類是遺留類,不應該繼續使用:

  • Hashtable:一種線程安全的 Map 實現;在并發環境中,可以使用 ConcurrentHashMap 作為替代品。
  • Vector:一種線程安全的 List 實現;如果您在非并發環境中使用 Vector ,那么您可以安全地將其替換為 ArrayList
  • Stack:基于 Vector 實現的 LIFO 的棧。在非并發環境中應替換為 ArrayDeque

還有一小部分接口是遺留接口,也不應該繼續使用:

  • Enumeration<E>:已被Iterator<E>取代。

1.3 集合框架設計特點

java集合設計特點:

  • 實現接口和實現類相分離

  • 支持泛型。限制在一個集合中只能放入同一種數據類型的元素,例如:

    List<String> list = new ArrayList<>(); // 只能放入String類型
    
  • java訪問集合統一通過迭代器來實現。這樣做的好處在于無需知道集合內部元素是按什么方式存儲的

參考資料

java.util (Java SE 21 & JDK 21) (oracle.com)

Java集合簡介 - 廖雪峰的官方網站 (liaoxuefeng.com)

The Collections Framework - Dev.java

Java 集合框架 | 菜鳥教程 (runoob.com)

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

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

相關文章

高云GW1NSR-4C開發板上手使用

1.開發板 核心板&#xff0c;主芯片GW1NSR-LV4CQN48P&#xff0c;絲印文字“奧陶紀Octet&#xff0c;QQ群808770961”&#xff1a; 晶振&#xff1a;27MHz&#xff0c;22引腳 兩個按鍵&#xff1a;靠近中間&#xff0c;23引腳&#xff0c;按下為低電平&#xff1b;靠近外側&…

Flink 讀寫 HBase 總結

前言 總結 Flink 讀寫 HBase 版本 Flink 1.15.4HBase 2.0.2Hudi 0.13.0官方文檔 https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/docs/connectors/table/hbase/ Jar包 https://repo1.maven.org/maven2/org/apache/flink/flink-sql-connector-hbase-2.2/1…

[Linux] yum安裝分布式LNMP架構

1. 在一臺主機安裝nginx&#xff08;192.168.136.120&#xff09; 1.1 搭建nginx相關的yum源 cd /yum.repos.d mkdir bak mv *.repo bak vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/7/$basearch/ gpgche…

基于Python+Django+mysql圖書管理系統

基于PythonDjangomysql圖書管理系統 一、系統介紹二、功能展示三、其它系統四、獲取源碼 一、系統介紹 程序開發軟件&#xff1a;Pycharm 數據庫&#xff1a;mysql 采用技術&#xff1a; Django(一個MVT框架&#xff0c;類似Java的SSM框架) 人生苦短&#xff0c;我用Python&a…

【rabbitMQ】rabbitMQ的下載,安裝與配置

目錄 1. 下載Erland 安裝步驟&#xff1a; 配置環境變量&#xff1a; 校驗環境變量配置是否成功 2.下載MQ 安裝步驟&#xff1a; 添加可視化插件 &#xff1a; 啟動&#xff1a; 拒絕訪問 1. 下載Erland 因為rabbitMQ是基于Erland,所以在安裝rabbitMQ之前需要安裝Erla…

WPF(Windows Presentation Foundation)的 ToolBar控件

WPF&#xff08;Windows Presentation Foundation&#xff09;的 ToolBar 是一種用于創建工具欄的控件。 工具欄通常位于應用程序窗口的頂部或側邊&#xff0c;并提供了一組常用的工具按鈕或命令&#xff0c;用于執行特定的操作或訪問特定的功能。 ToolBar 控件是 WPF 中的一個…

【基于NLP的微博情感分析:從數據爬取到情感洞察】

基于NLP的微博情感分析&#xff1a;從數據爬取到情感洞察 背景數據集技術選型功能實現創新點 今天我將分享一個基于NLP的微博情感分析項目&#xff0c;通過Python技術、NLP模型和Flask框架&#xff0c;對微博數據進行清洗、分詞、可視化&#xff0c;并利用NLP和貝葉斯進行情感分…

VoxPoser:使用語言模型進行機器人操作的可組合 3D 值圖

語言是一種壓縮媒介&#xff0c;人們通過它來提煉和傳達他們對世界的知識和經驗。大型語言模型&#xff08;LLMs&#xff09;已成為一種有前景的方法&#xff0c;通過將世界投影到語言空間中來捕捉這種抽象。雖然這些模型被認為在文本形式中內化了可概括的知識&#xff0c;但如…

Vulnhub-DC-6 靶機復現完整過程

一、搭建環境 kali充當攻擊機 ip地址是&#xff1a;192.168.200.14 DC-6充當靶機 &#xff1a; IP地址暫時未知 注意&#xff1a;讓兩臺機器的使用同一種網絡適配器 二、信息收集 1.探索同網段存活的主機、 ①第一種方法 arp-scan -l②第二種方法 netdiscover -i eth0 -…

前端知識筆記(二)———Django與Ajax

特點&#xff1a; 異步提交 局部刷新 例子&#xff1a;github注冊 動態獲取用戶名實時的跟后端確認并實時的展示到前端&#xff08;局部刷新&#xff09; 朝后端發送請求的方式 1.瀏覽器地址欄直接輸入url回車 -----》get請求 2.a標簽的href屬性 -----》get請求 3…

Python ipaddress模塊介紹

目錄 創建 Address/Network/Interface 對象 關于IP版本的說明 IP主機地址 定義網絡 主機接口 審查 Address/Network/Interface 對象 Network 作為 Address 列表 比較運算 將IP地址與其他模塊一起使用 實例創建失敗時獲取更多詳細信息 概述 本文檔旨在簡要介紹 ipaddr…

【大數據-Hadoop】從入門到源碼編譯-概念篇

【大數據-Hadoop】從入門到源碼編譯-概念篇 Hadoop與大數據生態&#xff08;一&#xff09;Hadoop是什么&#xff1f;&#xff08;二&#xff09;Hadoop組成1. HDFS1.1 NameNode&#xff08;nn&#xff09;1.2 DataNode&#xff08;dn&#xff09;1.3 Secondary NameNode&#…

記一次堆內外內存問題的排查和優化

為優化淘寶帶寬成本&#xff0c;我們在網關 SDK&#xff08;Java&#xff09;統一使用 ZSTD 替代 GZIP 壓縮以獲取更高的壓縮比&#xff0c;從而得到更小的響應包。具體實現采用官方推薦的 zstd-jni 庫。zstd-jni 會調用 zstd 的 c 庫。 背景 在性能壓測和優化過程中&#xff0…

React和Preact 這樣處理className更優雅

React和Preact寫className&#xff0c;我不太習慣使用模板字符串&#xff0c;不好看&#xff0c;看起來也不直觀&#xff0c;寫了如下兩個庫&#xff1a; react-runtime-clsx 和 preact-runtime-clsx&#xff0c;來輔助開發&#xff0c;可以更方便的處理className的問題&#x…

nodejs微信小程序+python+PHP北京地鐵票務APP-計算機畢業設計推薦 -安卓

目 錄 摘 要 I ABSTRACT II 目 錄 II 第1章 緒論 1 1.1背景及意義 1 1.2 國內外研究概況 1 1.3 研究的內容 1 第2章 相關技術 3 2.1 nodejs簡介 4 2.2 express框架介紹 6 2.4 MySQL數據庫 4 第3章 系統分析 5 3.1 需求分析 5 3.2 系統可行性分析 5 3.2.1技術可行性&#xff1a;…

STM32F103

提示&#xff1a;來源正點原子&#xff0c;參考STM32F103 戰艦開發指南V1.3PDF資料 文章目錄 前言一、pandas是什么&#xff1f;二、使用步驟 1.引入庫2.讀入數據總結 前言 提示&#xff1a;這里可以添加本文要記錄的大概內容&#xff1a; 開發環境硬件普中科技&#xff0c;接…

C++相關閑碎記錄(6)

1、使用shared_ptr #include <iostream> #include <memory> #include <set> #include <deque> #include <algorithm> #include <string>class Item { private:std::string name;float price; public:Item(const std::string& n, floa…

【Centos】

一、Virtualbox安裝Centos 1、Virtualbox 下載地址: Virtualbox 2、Centos 下載地址: Centos 3、Virtualbox安裝Centos教程 Virtualbox安裝Centos教程: Virtualbox安裝Centos教程

光學遙感顯著目標檢測初探筆記總結

目錄 觀看地址介紹什么是顯著性目標檢測根據不同的輸入會有不同的變體(顯著性目標檢測家族)目前這個領域的挑戰 技術方案論文1(2019)論文2(2021)論文3(2022) 未來展望 觀看地址 b站鏈接 介紹 什么是顯著性目標檢測 一張圖片里最吸引注意力的部分就是顯著性物體&#xff0c;…

vue3 vue-router 導航守衛 (五)

在Vue 3中&#xff0c;導航守衛仍然是一個重要的概念&#xff0c;用于在路由切換時執行一些特定的邏輯。Vue Router提供了多個導航守衛&#xff0c;包括全局守衛、路由獨享守衛和組件內守衛。可以在路由切換時執行一些特定的邏輯&#xff0c;例如身份驗證、權限控制、數據加載等…