集合學習總結

来源:https://www.cnblogs.com/swz20020720/archive/2023/09/07/17685905.html
-Advertisement-
Play Games

# 集合總結 ## 一、概述 1. 作用:存儲對象的容器,代替數組的,使用更加的便捷 2. 所處的位置:java.util 3. 體繫結構 ![image](https://img2023.cnblogs.com/blog/3245131/202309/3245131-202309071934421 ...


集合總結

一、概述

  1. 作用:存儲對象的容器,代替數組的,使用更加的便捷

  2. 所處的位置:java.util

  3. 體繫結構

image

二、Collection

  1. 內部的每一個元素都得是引用數據類型
  2. 常用方法
    • add(Object o) 添加元素
    • addAll(Collection c) 將指定集合中的所有元素存入到當前集合
    • remove(Object o) 移除元素
    • removeAll(Collection c) 刪除當前集合中包含指定集合中的所有元素
    • isEmpty() 判斷集合是否為空集合
    • size() 返回集合中元素的個數
    • clear() 清空集合
    • contains(Object o) :判斷集合中是否包含指定的元素
    • containsAll(Collection c) 判斷當前集合是否包含指定集合中的所有元素

三、List

  1. List是Collection下的一個子介面
  2. 特點:有序,可重覆,有下標
  3. 常用方法
    • add(int index,Object) 將指定元素添加到當前集合指定的位置
    • remove(int index) 刪除當前集合指定位置上的元素
    • get(int index) 獲取當前集合中指定位置上的元素
    • set(int index, Object o) 將當前集合中指定位置上的元素替換為指定的元素
    • List subList(int a,int b) 截取當前集合中的元素獲取一個子集、

四、List介面的實現類

(一)ArrayList(重點)

  1. 特點:底層封裝了一個數組用於存儲數據,數組預設長度為10
  2. 查詢快,增刪慢
  3. JDK1.2提供的
  4. 線程不安全

(二)LinkedList

  1. 特點:底層封裝了鏈表用於存儲數據,
  2. 增刪快,查詢慢,首尾操作極快
  3. JDK1.2提供
  4. 線程不安全

(三)Vector(瞭解)

  1. 內部封裝一個數組用於存儲數據
  2. 查詢快,增刪慢
  3. JDK1.0提供,最原始的集合
  4. 線程安全的
  5. Stack(棧)繼承了Vector

五、遍歷集合

  1. for迴圈遍歷
  2. 新迴圈,增強for迴圈
  3. 迭代器(iterator)遍歷
    • boolean hashNext() 問,是否有下一個元素
    • E next() 取,獲取下一個元素
    • void remove() 刪 刪除當前元素
  4. forEach方法遍歷 結合了Lambda表達式

六、Collections (類)

  1. java.util.Collections 是一個集合工具類
  2. 相關方法
    • Collections.sort(List list) 將集合進行升序排序
    • Collections.sort(List list, Comparator com) 自定義排序
    • Collections.reverse(List list) 將集合元素進行反轉

七、Set介面

  1. 也是Collection下的子介面
  2. 特點:無序,無下標,元素不可重覆
  3. 常用方法:Set的常用方法基本都是繼承自Collection

八、Set介面的實現類

(一)HashSet

  1. 特點: 無序,不重覆,無下標
  2. 數據存儲方式:由數組 + 鏈表 進行存儲 ,內部元素稱為 entry
  3. 去重機制:hashCode()方法 + equals()方法

(二) LinkedHashSet

  1. 特點:不能重覆,無下標 ,但是有序(元素插入數據順序是有序的)
  2. 數據存儲方式:由數組 + 鏈表 進行存儲 ,內部元素稱為 entry
  3. 去重機制 :hashCode()方法 + equals()方法

(三)TreeSet

  1. 特點:不能重覆,無下標,有序(可以自動對集合中存入元素進行自然排序<升序>,元素必須實現Comparable介面)
  2. 數據存儲方式:由數組 + 鏈表 進行存儲 ,內部元素稱為 entry,當鏈表中元素過多時,會通過二叉樹進行排序
  3. 去重機制:根據Comparable介面中的compareTo()方法,方法返回值去過為0則表示對象相同
  4. compareTo() 比較器:
    • 返回值大於0 升序
    • 返回值等於0 相等,去重 ,
    • 返回值小於0 降序

九、Map

  1. 特點:一個元素由兩個對象構成,分別作為key和value,無序,無下標,鍵不可以重覆,值可以重覆,通過鍵來訪問
  2. 常用方法
    • put(Object key,Object value) :往Map中存放一個元素
    • get(Object key) 通過指定的key獲取當前集合中的value
    • remove(Object key) 通過指定的key刪除當前集合中的元素
    • size() 獲取集合中元素的個數
    • keySet() : 將集合中所有的key轉換成一個Set集合
    • entrySet(): 將集合中所有元素轉換成一個Set集合
    • values(): 將集合中所有的value 轉換成一個Collection集合
    • containsKey(Object key): 當前集合中是否包含指定的key
    • containsValue(Object value):當前集合中是否包含指定的value
  3. 遍歷Map集合的四種方式
    • 遍歷所有的key keySet()
    • 遍歷所有的鍵值對 entrySet()
    • 遍歷所有的value values()
    • forEach()遍歷

十、Map介面的實現類

(一)HashMap(重點)

  1. 特點:無序,不重覆,無下標
  2. 允許null作為key和value
  3. JDK1.2提供,線程不安全
  4. 去重機制:hashCode() + equals()

(二)LinkedHashMap

  1. 特點:不重覆,無下標,有序(可以保存元素的插入順序)
  2. 允許null作為key和value
  3. JDK1.2提供,線程不安全
  4. 去重機制:hashCode() + equals()

(三) TreeMap

  1. 特點:不重覆,無下標,有序(對key自動排序(自然排序))
  2. 允許null作為key和value
  3. JDK1.2提供,線程不安全
  4. 元素必須實現Comparable介面,並重寫compareTo方法
  5. 去重機制:根據compareTo方法,如果返回值為0則是同一個對象

(四)Properties

  1. 一般會創*.properties文件作為配置文件
  2. Prpperties是用於讀取*.properties文件的

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、小程式代碼構成 1.創建文件 在app.json文件中,pages中,直接寫上要添加的文件的名及路徑,然後保存即可(此方法在Mac上親測沒成功), Mac創建頁面的方式: pages文件右鍵,新建文件,然後輸入文件名 ![](https://img2023.cnblogs.com/blog/29 ...
  • 本文給大家介紹了什麼是"編程範式",選擇合適的編程範式可以提高代碼的可讀性、可維護性和可擴展性。 一、 什麼是編程範式? "編程範式"是一種編程思想的總稱,它是指在編寫程式時所採用的基本方法和規範。常見的編程範式有面向對象、函數式、邏輯式等。 選擇合適的編程範式可以提高代碼的可讀性、可維護性和可擴展 ...
  • ### 歡迎訪問我的GitHub > 這裡分類和彙總了欣宸的全部原創(含配套源碼):[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) ### 關於《LeetCode買賣股票》系列 - 在LeetC ...
  • 隨著金融科技的發展,越來越多的人選擇線上銀行或移動銀行上進行日常交易。在進行這些交易之前,通常需要進行身份驗證以確保賬戶的安全性。其中,銀行卡二要素驗證是一種常見的身份驗證方式。本文將為大家介紹如何使用銀行卡二要素驗證API介面,具體實現方法如下。 一、API介面介紹 銀行卡二要素驗證API介面是一 ...
  • JDK 代理和 CGLib 有什麼區別? 動態代理是一種機制,程式通過該機制在運行時動態生成代理對象並調用代理方法。動態代理主要有兩種實現機制,一種是基於反射動態代理的JDK,另一種是基於ASM動態代理機制的CGLib實現。現在讓我們談談兩種實現之間的區別以及如何實現它們 JDK 代理和 CGLib ...
  • ### 前言 上篇文章[10分鐘從源碼級別搞懂AQS(AbstractQueuedSynchronizer)](https://juejin.cn/post/7273506068104478760)說到JUC併發包中的同步組件大多使用AQS來實現 本篇文章通過AQS自己來實現一個同步組件,並從源碼級 ...
  • 函數是一組語句,可以在程式中重覆使用。函數不會在頁面載入時自動執行。函數將通過調用函數來執行。 ### 創建函數 要創建(通常稱為聲明)一個函數,請執行以下操作: - 使用 `func` 關鍵字。 - 指定函數的名稱,後跟括弧 `()`。 - 最後,在花括弧 `{}` 內添加定義函數應執行的代碼。 ...
  • 1.雙擊圖標 2.彈出如下對話框: 3、單擊按鈕Next,彈出如下對話框: 4、單擊按鈕I Agree,彈出如下對話框: 5、單擊按鈕Next,彈出如下對話框: 6、單擊Browse按鈕,可以重新設置安裝路徑 7、路徑重新設置後,單擊確定按鈕彈出如下對話框(註意,此時路徑已更改): 註意:如果想要設 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...