Java--Map集合

Map

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

支持映射的接口

|--------------|-------------------------------------|
| 接 口 | 描 述 |
| Map | 将唯一键映射到值 |
| NavigableMap | 扩展SortedMap接口,以处理基于最接近匹配搜索原则的键/值对检索 |
| SortedMap | 扩展Map接口,从而以升序保存键 |
| Map.Entry | 描述映射中的元素(键/值对) |

interface Map

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

映射类

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

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)

LinkedHashMap

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

LinkedHashMap定义了以下构造方法:

LinkedHashMap( )

LinkedHashMap(int capacity)

LinkedHashMap(int capacity, float fillRatio)

LinkedHashMap(Map m)

TreeMap

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

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

TreeMap( )

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

TreeMap(Map m)

TreeMap(SortedMap sm)

Hashtable类

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

主要区别:

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

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

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

Map的遍历

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

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

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

|-----------------|---------------|
| K getKey() | 返回该映射条目的键 |
| V getValue() | 返回该映射条目的值 |
| V setValue(V v) | 将这个映射条目的值设置为v |

直接使用增强for循环遍历Map

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

}

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

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

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

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

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

相关推荐
我今晚不熬夜17 分钟前
Java语言实现Modbus协议通过用串口读取数据(以RTU为例)
java·网络协议
小锋java12341 小时前
Maven 4 要来了:15 年后,Java 构建工具迎来"彻底重构"
java·maven
卓怡学长1 小时前
w269基于spring boot + vue 候鸟监测数据管理系统
java·数据库·spring boot·spring·intellij-idea
孫治AllenSun2 小时前
【MDC】使用 MDC 封装一个 LogMdcUtil 工具类
java·spring boot·后端
济*沧*海2 小时前
BaseMapper的介绍
java·windows·tomcat
李燚2 小时前
Go 项目怎么组织:DDD 4 层 vs MVC vs 脚本式
开发语言·golang·mvc·ddd·agent框架·eino
plainGeekDev2 小时前
依赖管理 → Version Catalog
android·java·kotlin
2zcode2 小时前
免费开源项目文档:基于MATLAB图像处理的啤酒瓶口缺陷检测系统设计与实现
开发语言·图像处理·matlab
人工智能时代 准备好了吗3 小时前
AI回答内容进入率监测:引用识别、文本匹配与语义判断
开发语言·人工智能·python
LONGZETECH3 小时前
新能源汽车动力电池检测仿真教学系统:C/S 分层架构与数字化实训落地全解析
大数据·c语言·开发语言·人工智能·架构·系统架构·汽车