Java集合:Map集合
一、简述
public interface Map<K,V>将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
注意:Map中的集合不能包含重复的键,值可以重复。每个键只能对应一个值。
Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值。
Map接口提供三种collection试图,允许以键集、值集或键-值集映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。
注:
将可变对象用作映射键时必须格外小心。当对象是映射中某个键时,如果以影响 equals 比较的方式更改了对象的值,则映射的行为将是不确定的。此项禁止的一种特殊情况是不允许某个映射将自身作为一个键包含。虽然允许某个映射将自身作为值包含,但请格外小心:在这样的映射上 equals 和 hashCode 方法的定义将不再是明确的。
所有通用的映射实现类应该提供两个“标准的”构造方法:
一个 void(无参数)构造方法,用于创建空映射;
一个是带有单个 Map 类型参数的构造方法,用于创建一个与其参数具有相同键-值映射关系的新映射。
实际上,后一个构造方法允许用户复制任意映射,生成所需类的一个等价映射。尽管无法强制执行此建议(因为接口不能包含构造方法),但是 JDK 中所有通用的映射实现都遵从它。
二、Map接口
public interface Map<K, V>{int size(); //返回此映射中的键-值映射关系数。boolean isEmpty(); //如果此映射未包含键-值映射关系,则返回 true。boolean containsKey(Object key); //如果此映射包含指定键的映射关系,则返回 true。boolean containsValue(Object value) //如果此映射将一个或多个键映射到指定值,则返回 true。V get(Object key); //根据key查找对应value数据,如果没有,则返回 null。V put(K key, V value); //向集合保存数据可选操作)。V remove(Object key); //如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。void putAll(Map<? extends K, ? extends V> m); //从指定映射中将所有映射关系复制到此映射中(可选操作)。void clear(); //从此映射中移除所有映射关系(可选操作)。Set<K> KeySet(); //返取出全部key。Collection<V> values(); //返回此映射中包含的值的 Collection 视图。Set<Map, Entry<K, V>> entrySet(); //即将Map集合转化为Set集合。interface Entry<K, V> {K getKey();V getValue();V setValue(V value);boolean equals(Object o);int hashCode(); }boolean equals(Object o); //比较指定的对象与此映射是否相等。int hashCode(); //返回此映射的哈希码值。
}
三、具体实现
接口java.util.Map,包括3个实现类:HashMap、Hashtable、TreeMap。当然还有LinkedHashMap、ConcurrentHashMap 、WeakHashMap。
Map是用来存储键值对的数据结构,键值对在数组中通过数组下标来对其内容索引的,而键值对在Map中,则是通过对象来进行索引,用来索引的对象叫做key,其对应的对象叫value。
四、Map的两种取值方式KeySet、entrySet
(一)KeySet
先获取所有键的集合,再根据键获取对应的值。(即先找到丈夫,再去找妻子)
keySet的演示图解
(二)entrySet
先获取map中的键值关系封装成一个个的entry对象, 存储到一个Set集合中,再迭代这个Set集合, 根据entry获取对应的key和value。向集合中存储自定义对象(entry类似于是结婚证)
entrySet的演示图解
HashMap : 内部结构是哈希表,不是同步的。允许null作为键,null作为值。
TreeMap : 内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。
五、HashMap
Java集合:Map集合相关推荐
- 1.6 Java遍历Map集合
Java遍历Map集合的四种方式 Map 集合的遍历与 List 和 Set 集合不同.Map 有两组值,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历.Map 以及实现 Map ...
- java 定义map集合_java基础-Map集合
java基础-Map集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Map集合概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它 ...
- (10)Java泛型-Map集合-集合框架工具类-可变参数-静态导入
-- 部分1.5新特性Java泛型-Map集合-集合框架工具类 泛型 概述: JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 对于泛型可以这样理解: 没有使用泛型时,只要是对 ...
- 黑马程序员----------------java基础-----------------Map集合
------- <a href="http://www.itheima.com" target="blank">android培训</a ...
- 【Groovy】map 集合 ( map 集合操作符重载 | 使用 << 操作符添加一个元素 | 代码示例 )
文章目录 一.使用 " << " 操作符添加一个元素 二.代码示例 一.使用 " << " 操作符添加一个元素 对 map 集合 使用 ...
- 【Groovy】map 集合 ( map 集合操作符重载 | + 操作符重载 | 代码示例 )
文章目录 一.map 集合 " + " 操作符重载 二.代码示例 一.map 集合 " + " 操作符重载 对 map 集合使用 " + " ...
- 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )
文章目录 一.使用 map 集合的 each 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 each 方法遍历 map 集合 遍历 map 集合 , 可以调用 map 集合的 eac ...
- 常见的数据结构:栈 队列 数组 链表 红黑树——List集合 _ HashSet集合、可变参数 collections集合 Map集合
2021-06-07复习java 一.常见的数据结构 栈(先进后出) 队列 数组 链表 红黑树 二.List集合_介绍&常用方法 ArrayList集合 Linkedlist集合 三.Hash ...
- JAVA中Map集合的使用举例
首先创建一个Emp类,再将几个Emp对象添加到Map集合中. Emp的id作为Map的键,并将id为"005"的对象从集合中删除. package com.han;import j ...
- [Java基础]Map集合的遍历
Map集合是Java中非常常用的一个集合,通过Map集合可以实现对数据的快速检索和插入删除等操作:同样对Map集合的遍历也是十分重要的:如果你之前学过C++,那么对于Map的遍历操作可就不能像是C++ ...
最新文章
- “斐波那契数列”的两种算法
- 转轮机加密详解两种解题方法 -攻防世界
- php 去掉字符串的逗号,php 怎么去掉字符串最后一个逗号
- SIFT算法原理(不带公式)
- pc端vue项目打开pdf文件;网页查看pdf文件;浏览器直接打开pdf文件
- C++ new一个数组时,指针移动程序崩溃问题
- rhel6.1 kvm安装virtio驱动
- CenterNet+ deepsort实现多目标跟踪
- Java中的基本类型和引用类型(未完)
- 关于Windows 2003 sp1不能打开CHM文件的问题
- 广义矩估计的一般步骤_【基本无害】动态理性预期理论与广义矩估计02
- CSS Sprite雪碧图应用
- 如何打开.DAT格式的测风数据?
- 【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
- 人工智能在实体零售行业,主要的应用场景是什么?
- 黄天不负有心人,拥有属于自己的LOGO
- 如何比较两个速度的大小地程序_58安居客小程序平台化与多小程序开发探索与实践...
- 抖音小店另类起店方法
- 1897个D3 例子
- 中秋佳节,实现一个自定义任意路径嫦娥奔月程序:过什么节,代码走起
热门文章
- c++检测输入是否为数字_Go64 for Mac(检测应用是否为64位)
- svm回归matlab工具箱很慢,PSO优化SVM参数进行回归预测,结果很不理想
- java两个长度不同数组_两组数组,长度不一样,如果其中一个数组的值在另一个中不存在,则不符合要求.怎么算?...
- mysql源码_MySql轻松入门系列——第一站 从源码角度轻松认识mysql整体框架图
- ciaodvd数据集的简单介绍_人工智能进阶-CIFAR-10数据集介绍
- 多线程 循环 锁_大多数人还不清楚的iOS多线程
- mysql挪到小数点位置_mysql数据库迁移到另一个硬盘上
- c语言编程常见问题解答,C语言编程常见问题解答之常用函数的包含文件
- Maven 系列 2:Maven 本地仓库与远程仓库配置完整步骤以及修改 settings.xml 后的完整内容(配置非私服,远程仓储镜像强力推荐阿里云)
- webpack+react+es6开发模式