首页 > 编程语言 >javaMap笔记分享

javaMap笔记分享

时间:2024-07-09 08:58:16浏览次数:20  
标签:Map HashMap 映射 TreeMap 笔记 接口 分享 LinkedHashMap javaMap

Map

映射(map)是存储键和值间关联(即,键值对)的对象。给定一个键,可以找到其值。键和值都是对象。键必须唯一,但是值可以重复。

13.1  支持映射的接口

接  口

描  述

Map

将唯一键映射到值

NavigableMap

扩展SortedMap接口,以处理基于最接近匹配搜索原则的键/值对检索

SortedMap

扩展Map接口,从而以升序保存键

Map.Entry

描述映射中的元素(键/值对)

interface Map

映射围绕两个基本操作:get()和put()。为了将值放入到映射中,使用put(),指定键和值。为了获取值,调用get(),传递键作为变元,值会被返回。

13.2  映射类

常用的映射类:HashMap、LinkedHashMap、TreeMap

13.2.1  HashMap

HashMap实现了Map接口。它使用哈希表存储映射,即使对于比较大的集合,get()和put()的执行时间也保持不变。其声明如下:

class HashMap

HashMap类定义了以下构造方法:

HashMap( )

HashMap(int capacity)  //指定容量,默认是16

HashMap(int capacity, float fillRatio) //充填比率,0.0-1.0之间,默认0.75

HashMap(Map m)

13.2.2  LinkedHashMap

LinkedHashMap扩展了Hashmap类,该类在内部使用一个链表维护条目添加到映射中的顺序,从而可以按照插入顺序迭代整个映射。

LinkedHashMap定义了以下构造方法:

LinkedHashMap( )

LinkedHashMap(int capacity)

LinkedHashMap(int capacity, float fillRatio)

LinkedHashMap(Map m)

13.2.3  TreeMap

TreeMap类扩展了AbstractMap类,并实现了NavigableMap接口。该类使用树接口存储条目。TreeMap提供了有序存储键/值对的高效手段,并支持快速检索。应当注意,TreeMap确保其元素以键的升序存储。

TreeMap类定义了以下构造方法:

l TreeMap( )

l TreeMap(Comparator comp)  //比较器对象作为参数

l TreeMap(Map m)

l TreeMap(SortedMap sm)

13.2.4  Hashtable类

Hashtable类也实现了Map接口,与HashMap类似。

主要区别:

1、Hashtable是同步的、线程安全的,而HashMap不是同步的,没有实现线程安全。

2、HashMap允许将null作为一个条目的key或者value,而Hashtable不允许。当然只能有一个条目的键为null。

3、HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

13.3  Map的遍历

映射不是集合,没有实现Collection接口。因此不能直接遍历映射。

Entry接口是在Map接口的内部定义的,是内部接口。

在Map中存储的元素是键-值对,一个键-值对作为一个整体使用Map.Entry接口表示。Map.Entry定义的方法:

K  getKey()

返回该映射条目的键

V  getValue()

返回该映射条目的值

V  setValue(V v)

将这个映射条目的值设置为v

Map map = new HashMap();

map.put("a", 1);

map.put("b", 2);

map.put("c", 3);

for (Map.Entry entry : map.entrySet()) {

// 获取当前遍历的键

String key = entry.getKey();

// 获取当前遍历的值

Integer value = entry.getValue();

// 打印当前遍历的键值对

System.out.println("key:" + key + ";value:" + value);

// key:a;value:1

// key:b;value:2

// key:c;value:3

}

                        

为了遍历映射需要采用变通的方法:获得映射的集合视图。

l 使用entrySet()方法,返回包含映射中所有元素(键-值对)的Set对象

l 使用keySet(),返回包含映射中所有键的Set对象。

l 使用values(),返回包含映射中所有值的Collection对象

对于这三个集合视图都是基于映射的,修改其中的一个集合会影响其他集合。

标签:Map,HashMap,映射,TreeMap,笔记,接口,分享,LinkedHashMap,javaMap
From: https://blog.csdn.net/m0_68844946/article/details/140201133

相关文章

  • java集合笔记分享
    集合 前言集合:集合是java中提供的一种容器,可以用来存储多个数据。集合和数组既然都是容器,它们有啥区别呢?集合和数组的区别:   数组的长度是固定的。集合的长度是可变的。   数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的......
  • Java核心技术学习笔记(五)
    一、ArrayList,LinkedList,Vector的相同点与区别Java集合框架提供多种数据结构,其中ArrayList、LinkedList和Vector是常用列表实现。它们具有共同特性,如实现List接口、有序性和可动态调整大小,但也存在底层数据结构、线程安全性和性能等方面的区别。选择哪种集合取决于具体使用场景。......
  • redis学习笔记
    redis笔记1.Redis是什么?Redis(RemoteDictionaryServer)是一个使用C语言编写的,高性能非关系型的键值对数据库。与传统数据库不同的是,Redis的数据是存在内存中的,所以读写速度非常快,被广泛应用于缓存方向。Redis可以将数据写入磁盘中,保证了数据的安全不丢失,而且Redis的操作......
  • 谷粒商城学习笔记-2-分布式组件-SpringCloud Alibaba-Nacos注册中心
    文章目录一,Nacos简介1,简介2,Nacos原理剖析二,Nacos服务端安装1,下载nacos-server2,解压启动nacos-server3,验证三,服务注册步骤1,引用Nacas客户端的Jar包2,服务启动类增加注解3,配置Nacos服务器地址四,验证错误记录一,Nacos简介1,简介Nacos是阿里巴巴开源的一个更易于构建云......
  • 【Git 学习笔记】第三章 分支、合并及配置项(下)
    3.4使用rerere合并有冲突的Git版本如果每天都需要合并分支,或者在一个长期维护的特性分支上需要一直相同的代码冲突,那么可以试试gitrerere(reuserecordedresolution)。该命令默认不生效,需要手动配置生效:(可设为用户级配置,添加--global标记)$gitconfigrerere.en......
  • 2024/7/8 笔记
    CF1656Hhttps://www.luogu.com.cn/problem/CF1656H参考DaiRuiChen007的题解:code:usingnamespacestd;#definell__int128_tconstintmaxn=1e3+10;llgcd(lla,llb){ returnb?gcd(b,a%b):a;}constintN=1024,N2=N<<2;structstree{ lltree[N2];......
  • 【操作系统】进程管理——进程的同步与互斥(个人笔记)
    学习日期:2024.7.8内容摘要:进程同步/互斥的概念和意义,基于软/硬件的实现方法进程同步与互斥的概念和意义为什么要有进程同步机制?回顾:在《进程管理》第一章中,我们学习了进程具有异步性的特征,即各个并发执行的进程以各自独立、不可预知的速度向前推进。但是,有的情况下,我们希......
  • 保姆级阿里云接入http接口加密数据教程,一看就会!大厂经验分享,接口数据落表
    前言:有关接口数据的接入,源端会给予我们一份接口说明文件,接着我们需依据对方提供的接口文档进行代码编写,以实现数据落表。接入步骤大致可分为以下几步:1.依据对方提供的接口文档,明确接口地址、请求方式、传参信息以及参数格式等。2.借助编写代码,获取接口数据内容。3.按照......
  • ts学习笔记
    1、ts简介以js为基础构建的语言,是js的超集,拓展了js并添加了类型,可以在任何支持js的平台执行。但是ts不能被js解析器直接执行,需要编译为js才能执行。  ts新加了类型,像枚举、any、接口、字面量等   Ts支持ES的新特性   Ts可以被编译成任意版本的js,方便兼容2、ts环......
  • AI绘画最强SD(Stable Diffusion)玩法实操教学案例及商业变现项目分享
    AI绘画现在越来越火爆了,很多人无论大人小孩都在玩,还有的很多电商老板也在使用辅助生成产品主图和详情页,可以说是非常的实用。而其中最让人追捧和好评的就是SD(StableDiffusion)这款AI绘图软件了,StableDiffusion是一款基于深度学习的图像生成工具,它可以根据文本描述生成高质......