Java基础集合(Map)

存储特点

  1. 以键值对的形式存储, 一个元素由两个值组成

  2. 键(K-key): 无序, 无下标, 元素不可重复

  3. 值(V-value): 无序, 无下标, 元素可以重复

常用实现类

 

  1. HashMap

    • JDK1.2 底层哈希表实现 线程不安全, 效率高

  2. LinkedHashMap

    • JDK1.2 是HashMap的子类, 底层哈希表实现 线程不安全, 效率高

  3. TreeMap

    • JDK1.2 是SortedMap的实现类, 底层红黑树实现 线程不安全,效率高

  4. Hashtable

    • JDK1.0 底层哈希表实现 线程安全,效率低

  5. Properties

    • JDK1.0 是Hashtable的子类, 底层哈希表实现 线程安全, 效率低

创建

  • 建议使用多态

Map<键的泛型,值的泛型> 集合名=new 实现类名<>();

常用方法

  • 集合名.方法名(实参列表)

  1. 旧V put(K, V): 向集合添加一个键值对

    • 如果键已经存在, 则进行值的覆盖

  2. V get(K): 根据键获取对应的值 , 键不存在, 则返回null

  3. boolean containsKey(K): 判断集合是否存在指定键

  4. boolean containsValue(V): 判断集合是否存在指定值

  5. int size(): 获取集合键值对的个数

  6. V remove(K): 根据键删除整个键值对

遍历

  1. 键遍历

    • 思路: 先获取集合所有的键, 遍历键根据键获取值

    • Set<K的泛型> keySet(): 获取所有的键存入Set集合返回

    //创建Map集合, 存储用户信息Map<String, String> map = new HashMap<>();map.put("username", "zhangsan");map.put("username", "lisi");map.put("tel", "15512347896");map.put("pwd", "15533333333");map.put("address", "郑州");
    ​//键遍历//1. 获取所有的键Set<String> set1 = map.keySet();//2. 遍历所有的键for (String k : set1) {//3. 根据键获取对应的值System.out.println(k+"  ->  "+map.get(k));}
  2. 值遍历

    • 思路: 获取所有的值进行遍历

    • Collection<V的泛型> values(): 获取所有的值存入Collection集合返回

            //1. 获取所有的值Collection<String> coll = map.values();//2. 遍历值coll.forEach(v-> System.out.println(v));
  3. 键值对遍历

    • 思路: 直接获取所有的键值对-> 将键值对存入一个键值对对象, 以对象集合的形式返回, 再遍历所有的键值对对象, 获取键与值

    • Entry接口: 存储一个键值对的接口, 是Map的内部接口, 表现形式为Map.Entry<键的泛型, 值的泛型>

      • Entry对象.方法名():

      • K getKey(): 获取entry对象存储的键

      • V getValue(): 获取entry对象存储的值

    • Set<Entry类型> entrySet(): 将键值对存入Entry对象, 并将所有的Entry对象存入Set集合返回

    //1. 获取所有的键值对对象Set<Map.Entry<String, String>> set2 = map.entrySet();//2. 遍历键值对对象集合, 获取键和值//外遍历for (Map.Entry<String, String> entry : set2) {//3. 从entry对象中获取键和值System.out.println(entry.getKey()+"   ->   "+entry.getValue());}//自遍历set2.forEach(entry->System.out.println(entry.getKey()+"   ->   "+entry.getValue()));
  4. 自遍历forEach

    • 思路: 将集合元素传入BiConsumer的方法作为实参, 执行方法操作元素

    • 集合名.forEach(BiComsumer实现类对象)

    • JDK8.0

            System.out.println("\n自遍历-匿名内部类:");map.forEach(new BiConsumer<String, String>() {@Overridepublic void accept(String k, String v) {System.out.println(k+"   ->    "+v);}});System.out.println("\n自遍历-lambda:");map.forEach((k,v)-> System.out.println(k+"   ->    "+v));

使用

  1. 底层哈希表实现的几个实现类: 当键为自定义类型时, 必须重写其hashCode()和equals()才能保证键的去重

  2. LinkedHashMap可以保证元素存入和取出的顺序一致

  3. TreeMap可以根据键进行默认的升序排序

    • 当键为自定义类型时, 必须自定义排序规则, 两种方式与TreeSet一致

    • 当返回值为0时去重

  4. Hashtable无法存储null值

    • HashMap可以存储null值, 键至多存在一个null, 值可以存在多个null

  5. Properties只能存储String类型的数据

    • 不推荐使用多态

    • 不能添加泛型

    • 常用方法:

      1. setProperty(k,v): 添加键值对的方法, 与Map中的put()一致

      2. V getProperty(K): 根据键获取值, 与Map中的get(K)一致

      3. load(输入流对象): 通过指定IO流将配置文件中的内容加载到集合中

今日掌握

  1. Map的存储特点

  2. 常用实现类和特点

  3. 创建语法

  4. 遍历方式

  5. 各个实现类的使用特点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/36103.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

NEXT开发应用质量建议与测试指南

随着鸿蒙原生开发如火如荼的进展&#xff0c;NEXT对应用的质量提出了更高的要求。 NEXT的应用质量分为2个部分内容&#xff1a; ⚫ 体验质量&#xff1a; 功能数据完备、基础体验、HarmonyOS特征增强体验 ⚫ 内容合规&#xff1a; 资质、内容、广告、付费、开发者行为等 单元测…

java应用cpu占用过高故障排除

首先一定要清楚&#xff1a;java应用造成cpu过高的主要原因 1&#xff1a;一般是线程一直处于可运行&#xff08;Runnable&#xff09;状态&#xff0c;通常这些线程在执行无阻塞操作、循环、正则或纯粹的计算等任务 2&#xff1a;另一个可能造成CPU高的原因是频繁GC&#xff…

CPU是如何执行任务的?

你清楚下面这几个问题吗&#xff1f; 有了内存&#xff0c;为什么还需要 CPU Cache&#xff1f; CPU 是怎么读写数据的&#xff1f; 如何让 CPU 能读取数据更快一些&#xff1f; CPU 伪共享是如何发生的&#xff1f;又该如何避免&#xff1f; CPU 是如何调度任务的&#x…

最短路径算法(Dijkstra算法 + Bellman-Ford 算法 + Floyd-Warshall算法)

最短路径算法 完整版万字原文见史上最全详解图数据结构 1. Dijkstra算法&#xff08;单源最短路径&#xff09;&#xff08;无负权边图&#xff09; 算法原理 1. Dijkstra 算法通过 贪心策略 计算从一个源顶点到其他所有 顶点的最短路径。2. 时间复杂度为 O(V^2)&#xff08…

pyqt6事件概要

例子&#xff1a; 利用qtdesigner建立闹钟 python代码 # 导入所需要的文件 from PyQt6.QtGui import QIcon, QPixmap from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QListWidgetItem from PyQt6 import uic from PyQt6.QtCore import Qt, QTime imp…

位运算符I^~

&运算&#xff1a;上下相等才是1&#xff0c;有一个不同就是0 |运算&#xff1a;只要有1返回的就是1 ^(亦或)运算&#xff1a;上下不同是1&#xff0c;相同是0 ~运算&#xff1a;非运算&#xff0c;与数据全相反 cpu核心运算原理&#xff0c;四种cpu底层小电路 例&#xf…

【求助】Tinymce组件异常

版本号 { "tinymce/tinymce-vue": "^3.0.1", "tinymce": "^5.10.9", "vue": "^2.6.10", }问题&#xff1a; 就是红框处点击后没有菜单出现&#xff0c;下面是正常的

大模型分布式训练框架——DeepSpeed

本文的主要内容是阐述DeepSpeed训练模块在跟进大模型技术中的作用&#xff0c;重点解析了RLHF在其中的应用。文中深入探讨了模型训练的关键概念&#xff0c;如显存需求、优化器迭代和混合精度训练。针对大规模模型训练&#xff0c;介绍了模型并行和流水线并行等分布式训练方法&…

跟着AI 学 AI, 开发一个ChatBot, 完整图文版__持续更新中

跟着AI 学 AI&#xff0c; 开发一个ChatBot, 完整图文版__持续更新中.记录步骤以便排查错误。 使用Python 加 Visual Studio Code&#xff0c;开发代码。 使用Flask 套件和 ngrok 工具。 Step 1 下载安装Python &#xff0c;下载完后 在CMD 测试 Python --version. 结果出现p…

Pyside6 --Qt Designer--Qt设计师--了解+运行ui_demo_1.py

目录 一、打开Qt设计师1.1 Terminal终端1.2 打开env&#xff0c;GUI虚拟环境下的scripts文件1.3 不常用文件介绍&#xff08;Scripts下面&#xff09; 二、了解Qt设计师的各个控件作用2.1 点击widget看看效果&#xff01;2.2 点击Main Window看看效果 三、编写一个简易的UI代码…

『大模型笔记』OpenAI 十二天活动第1天:o1和o1 pro

『大模型笔记』OpenAI 十二天活动第1天:o1和o1 pro 文章目录 一. 『大模型笔记』OpenAI 十二天活动第1天:o1和o1 proOpenAI的12天活动o1完整版本的发布o1 Pro模式ChatGPT Proo1的性能提升多模态输入与推理o1 Pro模式的应用模型对话与历史问题示范二. 参考文献一. 『大模型笔记…

SpringBoot 运行发生异常:java: 错误: 不支持发行版本 5

一、异常&#xff1a; 二、原因&#xff1a; 本地运行用的是JDK17&#xff0c;报错应该是项目编译配置使用的Java版本不对&#xff0c;需要检查一下项目及环境使用的Java编译版本配置。 三、解决&#xff1a;

2024.12.2——[极客大挑战 2019]Secret File 1

知识点&#xff1a;抓包 代码审计 filter伪协议 一、解题步骤 step 1 查看源代码中的信息 查看源代码发现一个php文件&#xff1a;[./Archive_room.php](http://72df1f22-85bf-47bb-b23a-efcaf88701d4.node5.buuoj.cn:81/Archive_room.php) 点进去后发现没什么用&#xff0c…

MKS EDGE Series RF Generators Power Solution 软件

MKS EDGE Series RF Generators Power Solution 软件

【汇编语言】标志寄存器(一) —— 标志寄存器中的标志位:ZF、PF、SF、CF、OF 一网打尽

前言 &#x1f4cc; 汇编语言是很多相关课程&#xff08;如数据结构、操作系统、微机原理&#xff09;的重要基础。但仅仅从课程的角度出发就太片面了&#xff0c;其实学习汇编语言可以深入理解计算机底层工作原理&#xff0c;提升代码效率&#xff0c;尤其在嵌入式系统和性能优…

【C++】priority_queue优先队列

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解C的string类的priority_queue优先队列&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 1. 介绍2. 仿函数(A) 介绍(B) 控制比较逻辑 3. priority_queue和…

Python3 operator 模块

Python2.x 版本中&#xff0c;使用 cmp() 函数来比较两个列表、数字或字符串等的大小关系。 Python 3.X 的版本中已经没有 cmp() 函数&#xff0c;如果你需要实现比较功能&#xff0c;需要引入 operator 模块&#xff0c;适合任何对象&#xff0c;包含的方法有&#xff1a; o…

短视频矩阵系统开发|技术源代码部署

短视频矩阵系统通过多账号运营管理、多平台视频智能分发等功能&#xff0c;助力企业实现视频引流、粉丝沉淀和转化。 短视频矩阵系统是一种创新的营销工具&#xff0c;它整合了多账号管理、视频智能分发、数据可视化等多种功能&#xff0c;为企业在短视频领域的发展提供了强大…

YOLOV11 快速使用教程

概述 这里主要记录使用NVIDIA GPU pytorch 检测系列模型的快速使用方式&#xff0c;可以快速解决一些工业应用的问题&#xff0c;比如&#xff1a;无网、数据大需要改路径、需要记录不同实验结果等问题。 安装 参考官网&#xff0c;自己安装好Python > 3.8和pytorch >…

git修改某次commit(白痴版)

第一步 在bash窗口运行 git rebase --interactive commitId^ 比如要改的commitId是 abcedf git rebase --interactive abcedf^键盘 按 i 或者 ins 进入编辑状态 进入insert 编辑状态 在bash窗口手动把对应commit前面的pick改为e或edit 按 esc 进入退出程序 输入 :wq 保存退出…