Map集合(雙列集合)

Map結合也稱為“鍵值對集合”,格式:{key1=value1,key2=value2....}

Map集合的特點:

鍵唯一:在Map集合中,鍵(key)是唯一的,不能有重復的鍵。如果嘗試插入一個已經存在的鍵,新的值會覆蓋舊的值。

值可重復:與鍵不同,值(value)可以重復。鍵和值時一一對應的,每個鍵只能找到自己對應的值。

Map集合的常用方法:

Map是雙列集合的祖宗,它的功能是全部雙列集合都可以繼承過來使用的。

常用實現類:

1.HashMap(由鍵決定特點):無序、不重復、無索引;

2.LInkedHashMap(由鍵決定特點):有序、不重復、無索引;

3.TreeMap(由鍵決定特點):按默認大小升序、不重復、無索引;

Map集合的遍歷方式:

1.鍵找值:先獲取Map集合全部的鍵,再通過遍歷鍵來找值。

通過Set集合存儲Map集合所有的鍵,然后再通過遍歷Set集合提取值

2.鍵值對:把"鍵值對"看成一個整體進行遍歷

Map提供的方法:Set<Map.Entry<K(類型),V(類型)> entrySet()> 獲取所有鍵值對的集合(Map.Entry<K,V>是一個整體類型)

也就是這個方法將Map集合中的鍵值對包裝成一個整體對象存到成Set集合,用getKey()和getValue()兩個方法獲取鍵值對。

3.Lambda表達式:jdk1.8開始之后的新技術(簡單)

需要用到的方法:default void forEach(BiConsumer<? super K,? super V> action)結合lambda遍歷Map集合。?

代碼演示:

public class test1 {public static void main(String[] args) {Map<String,Integer> map = new HashMap<>();map.put("小王",18);map.put("小李",19);map.put("小張",20);map.put("小宋",19);map.put("小王",19);System.out.println(map);//System.out.println(map.get("小王"));Set<String> set = map.keySet();//1.鍵找值將map的鍵添加到set中,遍歷setfor(String key:set){System.out.print(key+"="+map.get(key)+" ");}//2.鍵值對:Set<Map.Entry<String,Integer>> entrySet= map.entrySet();for(Map.Entry<String,Integer> entry:entrySet){System.out.print(entry.getKey()+"="+entry.getValue()+" ");}System.out.println();//3.Lambda表達式:map.forEach(new BiConsumer<String, Integer>() {@Overridepublic void accept(String s, Integer integer) {System.out.print(s+"="+integer);}});//簡化后map.forEach((s,integer)-> System.out.print(s+"="+integer));}
}

Map常用集合的實現類

底層實現原理本質上和Set集合一樣,實際上:原來學的Set系列集合的底層就是基于Map實現的,只是Set集合中的元素只要鍵數據,不要值數據而已

HashSet底層原理是HashMap

LinkedHashSet底層原理是LinkedHashMap

TreeSet底層原理是TreeMap

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

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

相關文章

springBoot項目測試時瀏覽器返回406問題解決方案

1. 如果基于最新版本的SpringBoot官方骨架創建的SpringBoot項目&#xff0c;在勾選了lombok的依賴之后&#xff0c;會在pom.xml中引入如下兩個插件&#xff1a; 2. 由于第一個插件 maven-compiler-plugin 的引入導致了這個問題&#xff0c;解決這個問題的方案呢&#xff0c;就是…

21.享元模式:思考與解讀

原文地址:享元模式&#xff1a;思考與解讀 更多內容請關注&#xff1a;深入思考與解讀設計模式 引言 在軟件開發中&#xff0c;特別是當你處理大量相似對象時&#xff0c;是否會遇到一個問題&#xff1a;大量的對象會占用大量的內存&#xff0c;而這些對象有許多相同的狀態&…

java方法重寫學習筆記

方法重寫介紹 子類和父類有兩個返回值&#xff0c;參數&#xff0c;名稱都一樣的方法&#xff0c; 子類的方法會覆蓋父類的方法。 調用 public class Overide01 {public static void main(String[] args) {Dog dog new Dog();dog.cry();} }Animal類 public class Animal {…

什么是ESLint?它有什么作用?

ESLint 是一個用于 靜態代碼分析 的工具,專門檢測 JavaScript/TypeScript 代碼中的潛在問題和風格違規。它通過預定義的規則集幫助開發者保持代碼的一致性和質量,是前端工程化的核心工具之一。 一、ESLint 的核心作用 1. 錯誤檢查(Error Detection) 識別語法錯誤、未定義變…

Docker的網絡介紹

網絡簡單介紹 在介紹 Docker 的網絡模式之前&#xff0c;先簡單說下我們在使用 Vmware 虛擬機中的網絡模式&#xff0c;形成對比&#xff0c;更好理解。 1、Vmware 中的網絡模式 1.1、VMnet0&#xff08;橋接模式&#xff09; 虛擬機通過宿主機的物理網卡直接連接到外部網絡…

Netty學習專欄(六):深度解析Netty核心參數——從參數配置到生產級優化

文章目錄 前言一、核心參數全景解析1.1 基礎網絡層參數1.2 內存管理參數1.3 水位線控制1.4 高級參數與系統級優化 二、生產級優化策略2.1 高并發場景優化2.2 低延遲場景優化 總結 前言 在分布式系統和高并發場景中&#xff0c;Netty作為高性能網絡通信框架的核心地位無可替代。…

計算機網絡學習(六)——UDP

一、UDP UDP&#xff08;User Datagram Protocol&#xff0c;用戶數據報協議&#xff09;是傳輸層的一種協議&#xff0c;和 TCP 并列。與 TCP 不同&#xff0c;UDP 是無連接、不可靠、面向報文的協議&#xff0c;它的設計目標是追求更快的數據傳輸速度和更小的開銷。 UDP 為…

vue3文本超出三行顯示省略號,點擊查看更多顯示全部文本

只有一行時&#xff08;不顯示展開按鈕&#xff09;&#xff1a; 話不多說&#xff0c;上碼 ~template <el-col :span"24"><el-form-item :label"$t(warningOrgNames_)"><div class"content-box" ref"contanierRef"…

手寫Tomcat(一)

一、Tomcat簡介 Tomcat 服務器是一個免費的開放源代碼的Web應用服務器&#xff0c;屬于輕量級應用服務器&#xff0c;在中小型系統和并發訪問用戶不是很多的場合下被普遍使用&#xff0c;是開發和調試JSP 程序的首選。 1.1 Tomcat基本架構 Servlet接口文件中定義的方法有以下…

第三節_PySide6中Qt Designer 的基礎使用_上篇

文章目錄 前言一、Qt Designer簡介1.什么是 Qt Designer&#xff1f;2.核心功能3.核心優勢 二、Qt Designer界面介紹1.主窗口的創建2.窗口五大區域的簡單介紹 三、界面布局 Layout1.窗口布局方式介紹2.UI布局技巧概述3.UI布局實戰應用 總結 前言 第二節_PySide6項目創建流程介…

行列式的線性性質(僅限于單一行的加法拆分)

當然可以&#xff0c;以下是經過排版優化后的內容&#xff0c;保持了原始內容不變&#xff0c;僅調整了格式以提升可讀性&#xff1a; 行列式的線性性質&#xff08;加法拆分&#xff09; 這個性質說的是&#xff1a;如果行列式的某一行&#xff08;或某一列&#xff09;的所有…

Git使用說明

配置Git 確定已經安裝了Git, 通過以下的命令配置全局的郵箱和用戶名 git config --global user.email "your@xx.com" git config --global user.name "yourname" 初始化本地倉庫 首先,打開終端并切換到存放你代碼的項目目錄。接著執行以下命令,將該…

【后端高階面經:緩存篇】36、如何保證Redis分布式鎖的高可用和高性能?

一、分布式鎖核心挑戰:從單機到分布式的跨越 (一)分布式鎖的本質需求 互斥性:同一時刻僅一個客戶端持有鎖容錯性:節點故障時鎖仍有效(避免單點)原子性:加鎖/釋放鎖操作原子完成可重入性:支持同一客戶端多次獲取同一把鎖(二)Redis天然優勢 單線程模型保證操作原子性…

【后端高階面經:MongoDB篇】40、怎么優化MongoDB的查詢性能?

一、索引優化&#xff1a;構建高效查詢的基石 &#xff08;一&#xff09;索引類型與適用場景 1. 五大核心索引類型 索引類型適用場景示例代碼性能影響單字段索引單條件查詢&#xff08;如用戶ID、狀態字段&#xff09;db.users.createIndex({ user_id: 1 })低復合索引多條件…

Linux wget 常用命令詳解

目錄 1.1 工具定位 基礎下載示例 二、高效下載參數詳解 2.1 下載控制類 2.2 文件管理類 2.3 網絡優化類 三、高級應用場景 3.1 遞歸下載與整站鏡像 3.2 自動化下載實踐 3.3 安全下載配置 四、參數速查手冊 4.1 常用參數匯總 1.1 工具定位 基礎下載語法 wget [選項…

Pytorch中文文本分類

本文為&#x1f517;365天深度學習訓練營內部文章 原作者&#xff1a;K同學啊 將對中文文本進行分類&#xff0c;示例如下&#xff1a; 文本分類流程圖 1.加載數據 import time import pandas as pd import torch from torch.utils.data import DataLoader, random_split impo…

13.「極簡」扣子(coze)教程 | 小程序UI設計進階(三)讓界面動起來,實操講透“聚焦”事件

前一期大師兄介紹了扣子平臺組件的兩種狀態“禁用”和“加載”。這兩種方法使控件可以通過簡單設置表示出更多的運行狀態。今天大師兄將詳細介紹控件的一種事件“聚焦”。 扣子&#xff08;coze&#xff09;編程 「極簡」扣子(coze)教程 | 小程序UI設計進階 II&#xff01;讓…

劍指offer11_矩陣中的路徑

矩陣中的路徑 請設計一個函數&#xff0c;用來判斷在一個矩陣中是否存在一條路徑包含的字符按訪問順序連在一起恰好為給定字符串。 路徑可以從矩陣中的任意一個格子開始&#xff0c;每一步可以在矩陣中向左&#xff0c;向右&#xff0c;向上&#xff0c;向下移動一個格子。 如…

騰訊2025年校招筆試真題手撕(三)

一、題目 今天正在進行賽車車隊選拔&#xff0c;每一輛賽車都有一個不可以改變的速度。現在需要選取速度差距在10以內的車隊&#xff08;車隊中速度的最大值減去最小值不大于10&#xff09;&#xff0c;用于迎賓。車隊的選拔按照的是人越多越好的原則&#xff0c;給出n輛車的速…

《三維點如何映射到圖像像素?——相機投影模型詳解》

引言 以三維投影介紹大多比較分散&#xff0c;不少小伙伴再面對諸多的坐標系轉換中容易弄混&#xff0c;特別是再寫代碼的時候可能搞錯&#xff0c;所有這篇文章幫大家完整的梳理3D視覺中的投影變換的全流程&#xff0c;一文弄清楚這個過程&#xff0c;幫助大家搞清坐標系轉換…