博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java集合系列——Map介绍(七)
阅读量:4320 次
发布时间:2019-06-06

本文共 1995 字,大约阅读时间需要 6 分钟。

一.Map概述

0.前言
首先介绍Map集合,因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。
1:介绍

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

此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。

2:类图关系

这里写图片描述

3:讲解

(1):AbstractMap是一个抽象类, 继承Map,实现了Map的大部分API,它的作用Map的实现类继承它,可以减少重复编码!

(2):SortedMap是一个接口 继承Map,自己也封装一下方法,SortedMap中的内容是排序的键值对,排序的方法是通过比较器(Comparator)。SortedMap的排序方式有两种:自然排序 或者 用户指定比较器。
(3):ConcurrentMap是一个接口,并且继承Map接口,在java.util.concurrent包下!
(4):HashMap 继承于AbstractMap,HashMap的内容是“键值对,但不保证次序”!
(5): TreeMap 继承于AbstractMap,且实现了NavigableMap接口;因此,TreeMap中的内容是键值对,有序的键值对

(6):ConcurrentHashMap继承AbstractMap实现ConcurrentMap,是一个并发的哈希表!此类与 Hashtable 相似,但与 HashMap 不同,它不 允许将 null 用作键或值。线程安全,但是实现方法和Hashtable完全不同(并发情况可以使用) 。

(7):Dictionary是一个抽象类(数据字典),HashTable继承Dictionary并实现Map接口,也是键值对,但不保证次序!Hashtable是线程安全的,而且它支持通过Enumeration去遍历。(现在使用很少,并发操作效率太低)

二.Map的API

void clear()           从此映射中移除所有映射关系(可选操作)。  boolean containsKey(Object key)           如果此映射包含指定键的映射关系,则返回 true。  boolean containsValue(Object value)           如果此映射将一个或多个键映射到指定值,则返回 true。  Set
> entrySet() 返回此映射中包含的映射关系的 Set 视图。 boolean equals(Object o) 比较指定的对象与此映射是否相等。 V get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 int hashCode() 返回此映射的哈希码值。 boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true。 Set
keySet() 返回此映射中包含的键的 Set 视图。 V put(K key, V value) 将指定的值与此映射中的指定键关联(可选操作)。 void putAll(Map
m) 从指定映射中将所有映射关系复制到此映射中(可选操作)。 V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 int size() 返回此映射中的键-值映射关系数。 Collection
values() 返回此映射中包含的值的 Collection 视图。

其中:

entrySet()用于返回键-值集的Set集合   keySet()用于返回键集的Set集合   values()用户返回值集的Collection集合

嵌套类:

interface Entry
{ 映射项(键-值对 )

三.后言

接下来的博文介绍Map的实现类。主要介绍HashMap和TreeMap!其他的有时间会在去研究!

附:Map类图(来源网络)

这里写图片描述

这里写图片描述

参考文章:


欢迎访问我的csdn博客,我们一同成长!

"不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!"

博客首页:

转载于:https://www.cnblogs.com/aflyun/p/6497811.html

你可能感兴趣的文章
sops的配置过程
查看>>
prometheus+grafana监控Linux和kubernetes的例子
查看>>
kubernetes 简单 hello world nginx svc deployment
查看>>
kubenetes 的svc从ClusterPort 改为NodePort
查看>>
kube-metric在kubernetes上的部署
查看>>
kubespray 修改配置
查看>>
部署kubernetes-prometheus和用kubespray部署kubernetes后修改kubelet的
查看>>
Hbase和Hadoop的内存参数调优 + 前端控制台
查看>>
SQuirreL连接Phoenix报java.util.concurrent.TimeoutException
查看>>
开启phoenix命名空间的自动映射
查看>>
Hbase标准配置文件
查看>>
elasticsearch 7.1 401 Unauthorized
查看>>
hbase数据导出和恢复 设置双master
查看>>
prometheus 的promsql的经典例子
查看>>
python 调试技巧
查看>>
centos7清楚journal日志
查看>>
federate - Prometheus outside k8s cluster + 总体架构图
查看>>
以py脚本形式ORM操作 及 django终端打印sql语句的设置
查看>>
NVIC_PriorityGroupConfig()的说明
查看>>
javascript:void(0);与return false
查看>>