接口Map为实现键映射数据结构定义了一个框架,这种结构可用于存储键值引用的对象。键值的作用与数组中的索引相同,是独一无二的值,用来存取数据结构中指定位置的数据。
接口Map定义了一种根据键值来存储和检索信息的方式。与ArrayList类似,但是不同的是Map中的键值可以是任何东西。从这个角度来说,ArrayList中的缩影可以认为是一种特殊的键值。
Map中键值对的映射关系很像现实中的儿子与父亲的对应关系,一个儿子的父亲一定是唯一的,儿子也是唯一的,但是不考虑计划生育的前提下一个父亲可以有多个儿子(此时多个键对应一个值),条条大路通罗马嘛。如下:
Map中最重要的几个方法:
插入元素:put(K key,V value):把指定的值与键相关联
移除元素:remove(Object key):如果存在一个键的映射关系,则将其从此映射中移除
清空:clear();清空Map中的所有元素
关系数:size():返回此映射中的键-值映射关系数
Map中两种取出元素的方法:
1.通过ketSet()取出
通过keySet()方法取出的是Map存取键值对的键值。然后因为键值是唯一的,因而可以通过键值来取出Map中所有的元素。
通过键值取出所有元素的代码如下:
运行结果是:
过程:
(1)把Map中所有键存入Set集合
(2)用迭代方式取出所有键,再通过get方法获取每个键对应的值
可见,在用ketSet()方法取出所有的值的本质在于把Map集合转化为Set集合,再通过迭代器取出。
2.通过entrySet()取出
用的方法:通过entrySet()方法返回一个集合:Set<Map.Entry<key,value>>
作用:将Map集合中的关系存入Set集合,这个关系的数据类型就是Map.Entry。
什么是Map.Entry?
Map.Entry也是一个接口,它是Map接口中的一个内部接口。本质在于一个对应关系。比如说,上面的键与值是儿子与父亲的关系,那么其基本的对应关系类型就是:键是值的儿子,那么,我们的Entry也就是一个关系,就是父子关系。
用Map.Entry获取所有元素的方法:
打印的结果是:
通过entrySet()方法与使用keySet()方法的步骤与原理相似,都是通过把Map集合转化为Set集合再调用Set集合的迭代器而得到相应的值,但不同的是,entrySet()得到的是对应关系的集合,而不是键值的集合。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |