java 字典

news2024/12/24 2:10:14

java 字典

数据结构总览

在这里插入图片描述

Map

Map 描述的是一种映射关系,一个 key 对应一个 value,可以添加,删除,修改和获取 key/value,util 提供了多种 Map

  • HashMap: hash 表实现的 map,插入删除查找性能都是 O(1),key 没有顺序
  • TreeMap: 红黑树实现的 map,插入删除查找都是 O(lgn),key 按从大到小顺序排列
  • Hashtable: hash 实现,线程安全,key 和 value 都不能为空,key 没有顺序
  • LinkedHashMap: hash + 链表实现,按插入顺序排序
  • IdentityHashMap: 判断 key 相等的条件是,两个引用指向同一个对象,即 key == e.key
  • WeakHashMap: 弱引用 map,不会获取数据的强引用,当数据被 GC 清理时,数据将被删除

Map 的主要接口如下:

  • isEmpty: 判断是否没有元素
  • size: 获取元素个数
  • get: 获取指定 key 的 value
  • getOrDefault: 获取指定 key 的 value,如果没有 key,返回默认值
  • containsKey: 判断字典是否包含 key
  • containsValue: 判断字典是否包含 value
  • keySet: key 的集合
  • values: value 的集合
  • entrySet: 包含 key/value 的集合,主要用于遍历
  • put: 添加一个 key/value
  • putIfAbsent: key 不存在才添加,如果 key 存在,返回 value,如果 key 不存在,返回 null
  • putAll: 合并 map,不存在的 key 添加,已存在的 key 覆盖
  • remove(key): 删除,返回老 value
  • remove(key, val): 存在 map[key] = val 才删除,返回是否有元素删除
  • replace(key, newVal): 替换,返回老 value
  • replace(key, val, newVal: 存在 map[key] = val 才替换,返回是否有元素替换
  • repalceAll: 对所有的 key/value 执行 BiFounction 替换原来的 value
  • compute: 所选的 key/oldValue 执行 BiFounction 替换原来的 value;如果 key 不存在,则 oldValue 为 null
  • computeIfPresent: key 存在才执行 BiFounction 替换原来的 value
  • computeIfAbsent: key 不存在才对 key 执行 Founction 作为 value 插入
  • merge: 用 oldValue 和 newValue 执行 BiFounction 替换原来的 value;如果 key 不存在,则 oldValue 为 null

Hashtable

Hashtable 的 key/value 都不允许为空

IdentityHashMap

IdentityHashMap 判断相等的条件是 key 和 entry.key 是否为同一个引用对象

WeakHashMap

WeakHashMap 的 key 为弱引用,当原对象被 GC 回收时,这个 key 也会被自动删除

SortedMap

SortedMap 继承自 Map,key 是有序的,提供了顺序相关的几个接口

  • firstKey: 最小的 key
  • lastKey: 最大的 key
  • headMap: 小于给定元素的 key 构成的 map
  • tailMap: 大于等于给定元素的 key 构成的 map
  • subMap: from 和 to 之间的元素构成的 map,包含 from 不包含 to

NavigableMap 继承自 SortedMap,提供了如下几个接口

  • lowerKey: 小于给定值的最大的 key
  • higherKey: 大于给定值的最小的 key
  • floorKey: 小于等于给定值的最大的 key
  • ceilingKey: 大于等于给定值的最小的 key
  • lowerEntry: 小于给定值的最大的 entry
  • higherEntry: 大于给定值的最小的 entry
  • floorEntry: 小于等于给定值的最大的 entry
  • ceilingEntry: 大于等于给定值的最小的 entry
  • pollFirstEntry: 删除并获取最小的 entry
  • pollLastEntry: 删除并获取最大的 entry
  • headSet: 头部 Map,提供额外参数是否包含给定值
  • tailSet: 尾部 Map,提供额外参数是否包含给定值
  • subSet: 子 Map,提供额外参数是否包含特定值

作者:hatlonely
链接:https://www.jianshu.com/p/905369de999a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

相关文章

MySQL跨服务器数据映射

MySQL跨服务器数据映射环境准备1. 首先是要查看数据库的federated引擎 开启/关闭 状态2. 打开任务管理器,并重启mysql服务3. 再次查看FEDERATED引擎状态,引擎已启动映射实现问题总结在日常的开发中经常进行跨数据库进行查询数据。 同服务器下跨数据库进…

【SpringCloud】SpringCloud详解之Feign实战

目录前言SpringCloud Feign远程服务调用一.需求二.两个服务的yml配置和访问路径三.使用RestTemplate远程调用(order服务内编写)四.使用Feign远程调用(order服务内配置)五.自定义Feign配置(order服务内配置)六.Feign配置日志(oder服务内配置)七.Feign调优(order服务内配置)八.抽…

STM32之 串口

串口通信串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方 式的扩展接口。串行接口(Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简 单,只…

Vue基础入门讲义(三)-指令

文章目录1.什么是指令?2.插值表达式2.1.花括号2.2.插值闪烁2.3.v-text和v-html3.v-model4.v-on4.1.基本用法4.2.事件修饰5.v-for5.1.遍历数组5.2.数组角标5.3.遍历对象6.key7.v-if和v-show7.1.基本使用7.2.与v-for结合7.3.v-else7.4.v-show8.v-bind8.1. 属性上使用v…

服务器处理发生异常:java.text.ParseException: Unparseable date

测试上传报文的时候遇见报错 服务器处理发生异常:java.text.ParseException: Unparseable date: “2023/03/03” 错误报文 实际需要的报文 错误原因 上传时间字段,与Date字段数据位数不匹配,Java类型:Date默认带有年月日 时分秒yyyy-mm-dd…

十年业务开发总结,如何做好高效高质量的价值交付

作者:杨博林 阿里大淘宝场景金融团队 软件交付是一个非常复杂的过程和体系,需要保障好每个阶段的质量和效率才能保障最终的质量和效率。本文将尝试从需求交付的前、中、后三个环节来阐述一下如何做高效高质量的价值交付。 一、背景 转眼间已经做了十年的…

JavaScript基础内容

日升时奋斗,日落时自省 目录 1、基础语法 2、DOM 2.1、选中页面元素 2.2、获取/修改元素内容 3、JS案例 3.1、网页版本猜数字 3.2、网页版表白墙 JS最初只是为了进行前端页面的开发后来JS也被赋予了更多的功能,可以用来开发桌面程序,手…

RHCSA-重置root密码(3.3)

方法1:rd.break (1)首先重启系统,在此页面按e键,在屏幕上显示内核启动参数 (2)知道linux这行,末尾空格后输入rd.break,然后按ctrlx (3)查看&#…

电脑桌面上的图标不见了怎么办?5个完美的解决技巧

案例:电脑桌面不显示任何东西? “救命!电脑打开后,只有桌面,任何图标都没有怎么办?心急,不知道该怎么解决?” 电脑桌面上的图标消失是一个比较常见的问题,许多用户都会…

Hadoop集群启动从节点没有DataNode

目录 一、问题背景 二、解决思路 三、解决办法: 一、问题背景 之前启动hadoop集群的时候都没有问题,今天启动hadoop集群的时候,从节点的DataNode没有启动起来。 二、解决思路 遇见节点起不来的情况,可以去看看当前节点的日志…

各大加密算法对比(原理、性能、安全、运用)

原理按加密可逆可以分为:加密可逆算法和加密不可逆算法。加密可逆算法又可以分为:对称加密和非对称加密。1、加密不可逆算法:一般采用hash算法加密,其原理一般是将原文长度补位成64的倍数,接着初始化固定长度的缓存值&…

大数据框架之Hadoop:MapReduce(五)Yarn资源调度器

Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配。 简言之,Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源&…

Windows Cannot Initialize Data Bindings 问题的解决方法

前言 拿到一个调试程序, 怎么折腾都打不开, 在客户那边, 尝试了几个系统版本, 发现Windows 10 21H2 版本可以正常运行。 尝试 系统篇 系统结果公司电脑 Windows 8有问题…下载安装 Windows10 22H2问题依旧下载安装 Windows10 21H2问题依旧家里的 笔记本Window 11正常 网上…

第三章 opengl之着色器

OpenGL着色器GLSLGLSL的数据类型向量输入与输出Uniform更多属性自己的着色器类着色器 着色器是运行在GPU上的小程序。着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和…

DC-DC模块电源隔离直流升压高压稳压输出5v12v24v转60v100v110v150v220v250v300v400v500v

特点效率高达80%以上1*1英寸标准封装单电压输出稳压输出工作温度: -40℃~85℃阻燃封装,满足UL94-V0 要求温度特性好可直接焊在PCB 上应用HRB 0.2~10W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:4.5~9V、9~18V、及18~36VDC标准&#…

软工第二次个人作业——软件案例分析

软工第二次个人作业——软件案例分析 项目内容这个作业属于哪个课程2023北航敏捷软件工程这个作业的要求在哪里个人作业-软件案例分析我在这个课程的目标是体验敏捷开发过程,掌握一些开发技能,为进一步发展作铺垫这个作业在哪个具体方面帮助我实现目标通…

四川大学软件学院|系统级编程期末复习

概述 选择题 50 分(原题率 80%):http://tieba.baidu.com/p/1250021454?&share9105&frsharewise&unique967707B1DAECEF4A785B61D29AF36950&st1639102957&client_type1&client_version12.10.1&sfccopy&share…

使用C语言实现简单的PNG图像读取

概述 首先,关于png图像的结构:PNG文件的结构、PNG格式的数据结构。这两篇文章说的比较细。我简单地说一下我使用到的地方: 注:①引于PNG格式的数据结构。②引于PNG文件的结构 “png文件的前8个字节为固定的文件头信息&#xff0…

Ubuntu中安装StaMPS

Ubuntu中安装StaMPS0 StaMPS简介1 首先安装好MATLAB,安装一些依赖工具包2 安装StaMPS2.1 下载StaMPS安装包2.2 安装2.3 配置环境2.4 matlab中的路径设置0 StaMPS简介 官网:https://homepages.see.leeds.ac.uk/~earahoo/stamps/ A software package to e…

水浒英雄为啥输?因为没愿景

水浒英雄为啥输?输在没愿景! 宋江没学企业管理,太遗憾 企业文化核心三件套:使命愿景价值观 趣讲大白话:没有远见成不了大事 【安志强趣讲信息科技92期】 ******************************* 水浒英雄的使命:替…