java集合之Map

2023-11-15

java集合之Map

Map接口概述

将键映射到值的对象

一个映射不能包含重复的键

每个键最多只能映射到一个值

 

Map接口和Collection接口的不同

Map是双列的,Collection是单列的

Map的键唯一,Collection的子体系Set是唯一的

Map集合的数据结构值针对键有效,跟值无关

Collection集合的数据结构是针对元素有效

 

 Map集合的特点:

     将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

Map集合和Collection集合的区别?

     Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。可以把这个理解为:夫妻对

 *      Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。可以把这个理解为:光棍(11.11)

 *

 * 注意:

 *      Map集合的数据结构值针对键有效,跟值无关 

 *

 * Map集合的功能概述:

 * 1:添加功能

 *      V put(K key,V value):添加元素。这个其实还有另一个功能?先不告诉你,等会讲

 *        如果键是第一次存储,就直接存储元素,返回null

 *        如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值

 * 2:删除功能

 *      void clear():移除所有的键值对元素

 *      V remove(Object key):根据键删除键值对元素,并把值返回

 * 3:判断功能

 *      boolean containsKey(Object key):判断集合是否包含指定的键

 *      boolean containsValue(Object value):判断集合是否包含指定的值

 *      boolean isEmpty():判断集合是否为空

 * 4:获取功能

 *      Set<Map.Entry<K,V>> entrySet():???

 *      V get(Object key):根据键获取值

 *      Set<K> keySet():获取集合中所有键的集合

 *      Collection<V> values():获取集合中所有值的集合

 * 5:长度功能

 *      int size():返回集合中的键值对的对数


常用获取方法

V get(Object key)

Set<K> keySet()

Collection<V> values()

Set<Map.Entry<K,V>> entrySet()

/*

 * 获取功能:

 * V get(Object key):根据键获取值

 * Set<K> keySet():获取集合中所有键的集合

 * Collection<V>values():获取集合中所有值的集合

* Set<Map.Entry<K,V>> entrySet():返回的是键值对对象的集合


Map集合的遍历。

方式1:根据键找值

  获取所有键的集合

  遍历键的集合,获取到每一个键

  根据键找值

方式2:根据键值对对象找键和值

  获取所有键值对对象的集合

  遍历键值对对象的集合,获取到每一个键值对对象

  根据键值对对象找键和值

 

 

HashMap

HashMap类概述

  键是哈希表结构,可以保证键的唯一性

/*

 * HashMap:是基于哈希表的Map接口实现。

 * 哈希表的作用是用来保证键的唯一性的。

LinkedHashMap类概

Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。

* LinkedHashMap:Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。

 * 由哈希表保证键的唯一性

 * 由链表保证键盘的有序(存储和取出的顺序一致)

 */

TreeMap类概述

TreeMap类概述

  键是红黑树结构,可以保证键的排序和唯一性

TreeMap案例

 TreeMap<String,String>

 TreeMap<Student,String>

 * TreeMap:是基于红黑树的Map接口的实现。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java集合之Map 的相关文章

  • mysql workbench 错误  Error Code: 1046. No database selected Select the default DB to be used by doubl

    mysql workbench 错误 Error Code 1046 No database selected Select the default DB to be used by double clicking its name in
  • mac 本地打安卓包 platforms;android-28 Android SDK Platform 28

    A newer version of the Android SDK is required To update run Users xxx Library Android sdk tools bin sdkmanager update 转
  • 自己理解的智能指针

    看安卓内核 第一章就碰到智能指针了 看了网上的一些文章 自己实践了一下 自己的体会 普通指针直接为某个具体类型分配空间 对该空间的管理直接由指针来操作 T p new T t 智能指针相当于对该空间进行封装 智能指针实际是一个类 share
  • SPOJ QTREE4 Query on a tree IV (边分治 + 堆)

    题意 给定一棵树 节点有黑白两种颜色 有正负的边权 有两种操作 一种是修改反转某个节点的颜色 另一种是询问树上最远的两个白色节点的距离 思路 树剖 堆维护的代码还是没敢去码 以后再补了 这里用边分治 堆来维护 边分治的优点比起点分支来说 优
  • 编写一个程序,提示用户输入一周工作的小时数,然后打印工资总额、税金和净收入。

    编写一个程序 提示用户输入一周工作的小时数 然后打印工资总额 税金和净收入 首先做如下假设 基本工资 10 00美元 小时 加班 超过40小时 1 5倍的时间 税率 前300美元为15 续150美元为20 余下的为25 用 define定义
  • 【马士兵】Python基础--10(集合)

    Python基础 10 文章目录 Python基础 10 什么是集合 集合的创建 集合的相关操作 集合间的关系 集合的数据操作 集合生成式 列表 字典 元组 集合总结 什么是集合 集合的创建 集合中元素不允许重复 集合中元素无序 s 23
  • Android 去掉Button自带边框

    android background null 将边框去掉
  • Vue - 安装less-loader

    文章目录 直接安装 遇到问题 与webpack版本不兼容 查看当前使用webpack版本 查看所有webpack版本 查看less loader历史版本 安装兼容版本less loader 直接安装 npm i less loader 下面
  • 字节流和字符流的转化

    Java中字节流和字符流是可以相互转换的 OutputStreamWriter 将字节输出流转换成字符输出流 是 writer 的子类 InputStreamReader 将字节流转换成字符输入流 是Reader 的子类 一般操作输入输出内
  • AOP JoinPoint中的方法

    获取参数的值数组 Object args point getArgs 1 参数的值 获取目标对象 被加强的对象 Object target point getTarget 获取signature 该注解作用在方法上 强转为 MethodSi
  • MySQL卸载不干净回不到初始安装页面(MySQL Connector Net卸载不了),重装报错Database initialization failed等问题解决办法

    首先 这篇文章适合 1 常规卸载方法无法卸载干净导致重装始终回不到初始安装页面 即回不到下图初始状态 始终是welcome back 这部分我会单独讲一下MySQL Connector Net卸载不了的问题 2 重装过程中Database
  • java之socket编程(NIO)

    效果展示 原理分析 NIO 非阻塞型 IO 自从 jdk 1 4 之后 增加了 nio 库 支持非阻塞型 IO 操作 代码展示 package NIO import java net InetSocketAddress import jav
  • 使用 Styled Components 编写样式化组件

    本文已整理到 Github 地址 blog 如果我的内容帮助到了您 欢迎点个 Star 鼓励鼓励 我希望我的内容可以帮助你 现在我专注于前端领域 但我也将分享我在有限的时间内看到和感受到的东西 Styled Components 是一个 C
  • 【ios开发技术】Swift 语言深入--Swift设计模式 (2/2)

    Getting Started 让我们开始 你可以下载the project source from the end of part 1与我们共同来探索 这是你在第一部分结束时完成的音乐库App样品 应用程序的最初设计包括在屏幕的顶端上上水
  • Mybatis--sql多对一的处理

    我们先来看看下图所示的例子 学生和老师之间就是一种多对一的关系 对于学生这边而言 多个学生关联一个老师 多对一 这是关联 对于老师这边而言 一个老师包含多个学生 一对多 这是集合 测试多对一实例 数据库表如下图所示 步骤一 构造学生实体类S
  • 雷蛇鼠标宏文件_雷蛇毒蝰终极版无线游戏鼠标评测

    目前的游戏鼠标产品已经逐渐向着轻量化的道路发展 目前上市的鼠标中 有不少都是以极致轻盈的重量惊艳四座 不久前 一款主打轻量化的Razer Viper有线鼠标上市 作为一款中大手型鼠标 它仅有69g的重量 并且还拥有不错的操控感和性能表现 从
  • 在直流电源(Vcc)和地之间并接电容的作用

    本文整理自网络 1 在直流电源 Vcc 和地之间并接电容的电容可称为滤波电容 滤波电容滤除电源的杂波和交流成分 平滑脉动直流电压 储存电能 取值一般100 4700uF 取值与负载电流和对电源的纯净度有关 容量越大越好 有时在大电容傍边会并
  • linux 网络协议栈(链路层)

    1 int netif receive skb struct sk buff skb 该函数是网络设备驱动到链路层协议栈的接口函数 该函数最后会调用 netif receive skb core函数 下面主要介绍函数流程 1 1 list
  • 实现一个发布-订阅模式

    订阅 发布者模式 订阅发布模式 一对多的关系 让多个观察者同时监听某一个主题对象 这个主题对象的状态发生改变时就会通知所有观察者对象 中间通过一个调度中心来发布通知 function Dep this subs Dep prototype
  • Navicat查看数据库实体的e-r以及设计新e-r模型

    Navicat查看已存在的表的E R图 Navicat默认查看的是列表 要想查看各个实体之间的关系 需要选中查看 在选中ER图表 如下图所示就可以展现实体之间的关系了 设计新的E R图模型 在没有数据库表的情况下 向创建E R图来转化为数据

随机推荐

  • Go面向对象

    前言 Go也有面向对象 面向对象引入 用面向对象好啊 结构体定义 GO中的结构体和其他语言中的class是同一个等级的 这个就懒得写了 直接贴一个 内存分析 当实例化一个结构体的时候 分配一份内存空间 结构体实例的创建 package ma
  • Docker for Windows WSL 2 backend

    文章目录 安装指南 1 明确安装要求 1 1 使用Docker Desktop WSL 2 backend 有两个条件 1 Windows 10版本升级到2004或更高 2 升级到WSL2 2 安装Docker Desktop 安装指南 h
  • 小程序搜索框提示功能以及简单的页面内容搜索的实现

    1 效果 先来看一下效果 2 设计思路 2 1 显示效果的设计 本示例包含两种不同的搜索框 第一种搜索框是在最初状态下显示的搜索框 它由一个输入框 input和一个表示 搜索 的图片组成 第二种搜索框是开始输入时的搜索框 它由一个输入框in
  • 网络情况不稳定 无法连接服务器,提示网络正常无法连接服务器

    提示网络正常无法连接服务器 内容精选 换一换 Agent无法正常启动 Linux系统提示 SMS 0201 Failed to start sms agent Please check the network connection with
  • 第8章 【C语言】善于利用指针

    8 1 指针是什么 由于通过地址能找到所需的变量单元 可以说 地址指向该变量单元 将地址形象化称为 指针 直接按变量名进行的访问 称为 直接访问 方式 还可以采用另一种称为 间接访问 的方式 即将变量i的地址存放在另一变量中 然后通过该变量
  • Linux 运行Jar包命令

    一 后台运行jar nohup java jar home spring one demo 0 0 1 SNAPSHOT jar gt spring log 2 gt 1 nohup java jar admin jar gt gt noh
  • 【环境配置】Mac环境下利用Homebrew安装指定python版本

    文章目录 基础环境介绍 安装python3 9 配置快捷启动 基础环境介绍 Mac版本 macOS Monterey 12 6 终端环境 zsh 安装工具 homebrew 安装python3 9 使用home brew 安装指定版本pyt
  • 设置路由分发规则

    1 创建子路由 定义项目路由 设置路由参数 index应用配置 配置index应用的路由urls py 测试index应用的路由配置 访问http 127 0 0 1 8000
  • 一个45岁大爷第一天学习python的心得,现在开始还算晚吗

    写在前面的话 本人今年45岁了 初中文化 感觉都不好意思写出来 哈哈 之前没有学过编程方面的东西 前段时间在头条上看到潘石圪在学习python编程 于是从各方面去了解了一下python到底是个什么 赶紧找了一下度娘 不看不知道 一看吓一跳啊
  • ubuntu提示根目录存储空间不足的解决办法

    因为每次使用系统都会产生大量的日志文件 如果没有设置自动清理日志文件或者分区较小 日志文件在一段时间的堆积后就会导致存储空间不足 所以需要清除日志文件 以下是清除步骤 1 切换为超级用户 su 2 查看日志文件大小 du h max dep
  • 【Windows】win10电脑Miracast投屏到电视

    Miracast 是一项无线技术 你的电脑可以使用它来将你的屏幕投影到电视 投影仪和同样支持 Miracast 的流媒体播放器 你可以使用此技术共享你在电脑上执行的操作 展示幻灯片放映 甚至在更大的屏幕上玩你喜爱的游戏 为你的设备做好准备
  • 目前最受欢迎的12个Python开源框架,你用过几个?

    今天给大家带来了12个在GitHub等开源网站中最受欢迎的Python开源框架 如果你正在学习python 那么这12个开源框架 千万别错过 这些框架包括事件I O OLAP Web开发 高性能网络通信 测试 爬虫等 虽说不上是全都有 但也
  • UE4 导航网格的使用

    在使用导航网格前 应先设置项目导航系统支持的导航代理者 Agents 在项目设置中 找到导航系统页面 DirtyAreasUpdateFreq 表示导航网格变化时 检测变化并更新的频率 这里可以设置导航系统的一些参数 包括是否允许客户端导航
  • DT下重新定义设置发布发布条数后的跳转页面

    destoon系统有些地方还是做得不够细致 今天给大家分享一个重新定义发布条数满了以后的页面跳转 正常逻辑跳转应该是会员升级页面而不是会员中心首页 修改方法如下 感谢DT朋友提供的修改方案 打开根目录文件 module article my
  • el-tree 阻止点击节点的时候自动展开或者收缩

    expand on click node 是否在点击节点的时候展开或者收缩节点 默认值为 true 如果为 false 则只有点箭头图标的时候才会展开或者收缩节点 但设置的时候 要加上 不然无效
  • 点选文字验证码识别

    最近在学习爬虫 碰到很多验证登录 今天分享一个点选文字验证码识别以及我在使用的验证码识别平台 上篇文章有涉及滑块验证 首先 注册一个超级鹰账号 选择充值0 5 1元即可 进入用户中心 gt 软件ID 生成一个用来接入接口的软件ID 下载示例
  • Acwing-二叉树的镜像

    遍历树中的所有点 每次遍历完之后把左右儿子swap一下 Definition for a binary tree node struct TreeNode int val TreeNode left TreeNode right TreeN
  • 线程池七大参数

    线程池的七大参数是指使用 ThreadPoolExecutor 创建线程池时所设置的 7 个参数 分别为 public ThreadPoolExecutor int corePoolSize int maximumPoolSize long
  • VScode for c++

    VScode for c VScode for c launch json version 0 2 0 configurations name gdb Launch type cppdbg request launch program wo
  • java集合之Map

    java集合之Map Map接口概述 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 Map接口和Collection接口的不同 Map是双列的 Collection是单列的 Map的键唯一 Collection的