集合學習總結

来源: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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...