博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
16、集合--Map接口
阅读量:5967 次
发布时间:2019-06-19

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

 

Map源码地址:https://www.cnblogs.com/Mrchengs/p/10842091.html

 

前提概要:

Map接口用于保存具有映射关系的数据

Map集合中保存了两组值

1、用于保存Map里的key

2、用于保存Map里的value

 

key和value都可是任何引用类型数据

Map的key不允许重复

即同一个map对象的任何两个key都通过equals()方法比较总还是false

key和value之间是一一对应的关系

即通过key就可以找到唯一的确定的value

 

从Map中取数据时,只要指定的key就可以取出对应的value

 

基本介绍:

常用方法:

添加、删除操作

1、put(Object key,Object value):将互相关联的键值对存入

2、Object remove(Object key):从映像中删除与key相关的映射

3、put(Map t):j将来自特定映像的t全部添加到印象中

4、clear():从映像中删除所有的映射

查询操作

get(Object key):根据关键字key进行查询对应的value

containsKey(Object key):判断映像中是否存在关键值key

containsValue(Object value):判断映像中是否 存在值value

size():返回当前映射的数量

isEmpty():判断映像中是否有任何映像

视图操作:

keySet():返回映像中所有关键字的视图集

values():返回映像中所有值的视图集

entrySet():返回Map.Entry对象的视图集,即关键字/值

 

因为映射是唯一的,所以要用Set支持。

 

接口和类

1、Map.Entry接口

通过map接口中的entrySet()方法可以返回一个实现Map.entry接口的对象集合

集合中的每个对象都是底层Map中一个特定的键值对

 

Map.Entry接口集合的迭代器可以获取每一个条目的键值对对值进行更改

当条目通过迭代器返回后,除非是迭代器自身remove()方法或者迭代器返回的条目的setValue()方法

其余对源Map外部的修改都会导致此条目集变得无效,同时产生条目行为未定义

 

---Object getKey():返回条目的关键字

---Object getValue():返回条目的值

---Object setValue(Object value):将相关映像中的值修改为value,并且返回旧值

 

2、SortedMap接口

用来保持键的有序顺序

public interface SortedMap
extends Map
{   //返回对关键字进行排序时的比较器 Comparator
comparator();  //返回[fromKey,toKey)范围内的SortedMap的视图集 SortedMap
subMap(K fromKey, K toKey);  //返回SortedMap的一个视图,其内各个元素的key都小于toKey SortedMap
headMap(K toKey);  //返回SortedMap的一个视图集,其内各个元素的key都大于等于fromKey SortedMap
tailMap(K fromKey);  //返回映像中第一个关键字 K firstKey();  //返回影像中最后一个关键字 K lastKey();   Set
keySet(); Collection
values(); Set
> entrySet();}

 

 

SortedMap接口是映像的视图(子集),在里面有两个端点提供了访问方法

除了排序是作用于映射的键以外处理SortedMap和处理SotredSet一样

 

添加到SortedMap实现类的元素必须实现Comparable接口

否则必须给他的构造函数提供一个COmparator的接口实现

类TreeMap是它的唯一实现

 

因为对于映射来说,每个键只能对应一个值

如果在添加一个“键/值”对时比较两个键产生了为0的返回值

那么原始键对应的值被新值代替

如果两个元素不相等则应该修改比较方法

让比较方法和equals()方法效果一致

 

3、AbstractMap抽象类

和其他抽象集合相似,类AbstractMap覆盖了equals()和hashCode()方法以确保两个相等映射返回相同的哈希码

如果两个映射大小相等,包含相同的键且每个键在着两个映射中对应的值都相同,则这两个映射相等

 

映射的哈希码是映射元素哈希码的总和

其中每个元素是Map.Entry接口的一个实现

 

所以不论映射内部顺序如何,两个相等映射会报告相同的哈希码

 

4、HashMap额TreeMap类

提供了两个Map的实现

在Map中插入、删除和定位是,HashMap是最好的选择

如果要求按自然排序或自定义顺序遍历键那么选择TreeMap会更好

使用hashMap要求添加的键类明确定义了hashCode()和equals()方法的实现

 

TreeMap没有调优选项,因为该树总处于平衡状态

 

①、HashMap类

为了优化hashMap空间使用,可以调优初始容量和负载因子

--HashMap():构建一个空的哈希映像

--HashMap(Map m):构建一个哈希映像,并且添加映像m为所有的映射

--HashMap(int initialCapacity):构建一个拥有特定容量的空的哈希映像

--HashMap(int initalCapacity,float liadFactor):构建一个拥有特定容量和加载引子的空的哈希映像

 

②、TreeMap类

TreeMap没有调优选项,该树总处于平衡状态

--TreeMap():构建一个空的映像树

--TreeMap(Map m):构建一个映像树,并且添加映像m中所有元素

--TreeMap(Comparator c):构建一个映像树,并且使用特定的比较器对关键字进行排序

--TreeMap(SortedMap s):构建一个映像树,添加映像树s中的所有映射,并且使用与有序映像s相同的比较排序

 

转载于:https://www.cnblogs.com/Mrchengs/p/10850727.html

你可能感兴趣的文章
4.9.5 通用注释
查看>>
PXE无人值守系统安装配置简要说明
查看>>
冰点文库下载V2绿色版,无需积分自由下载百度,mbalib,豆丁,畅享,hp009,max.book118 文档...
查看>>
composer笔记
查看>>
关于CRM库存初始化的一点小总结
查看>>
IntelliJ IDEA 12 中用 Maven + Jetty 来开发Web项目
查看>>
asterisk远程注册
查看>>
03-备份压缩命令
查看>>
电子表格控件Spreadsheet 对象方法事件详细介绍
查看>>
我的友情链接
查看>>
zabbix-server 的安装-centos7
查看>>
注销其他用户
查看>>
软路由ros(MIKROTIK)安装教程:[3]ROS注册
查看>>
Java中字符串中子串的查找共有四种方法(indexof())
查看>>
mysql 存储过程
查看>>
Sql Server 从日志中恢复误删除或误Update的数据
查看>>
sql 从一张表修改另一张表
查看>>
REHL 6 安装指南
查看>>
自定义分段选择
查看>>
我的友情链接
查看>>