Map集合
概述
现实生活中,我们常会看到这样一种集合:ip地址和主机名,身份证号和个人,系统用户名与系统用户对象等,这种是一一对应的关系,我们把它称为映射.java当中提供了专门的集合类用来存放这种映射关系的对象.即java.util.Map接口.
Map是双列数据结构,键值对 key value对应的数据结构
key键的值唯一
一个map的key键 可以储存null 但是只可以存储一次,value的值可以随意存储,因为key键唯一
单列数据结构和双列数据结构
-
Colleciont接口中的集合,元素是孤立存在的(单身`),向集合中存储元素采用的是一个一个的进行存储
-
Map接口中的集合是成对存在的,存储方式为一对 一对的进行存储,每个元素都有键和值两部分组成,因为键的唯一特性,我们可以通过键找到值
-
Collection接口中的集合我们称之为单列集合,Map中的集合我们称为双列集合
-
注意:Map中的集合不能包含重复的键,值可以重复,每个键对应唯一 一个值
Map接口的常用实现类
通过查看Api发现有很多的子类(实现类),我们主要介绍HashMap集合.LinkedHashMap集合.HashTable集合
-
HashMap; 存储数据采用的哈希表,元素的存取顺序可能不一致,由于要保证键的唯一性,不重复,需要重写键的HashCode方法和equals方法
-
LinkedHashMap:HashMap下面有个子类LinkedHashMap,存储数据的方式也是哈希表结构+链表结构,可以通过链表结构保证元素的存取顺序一致,通过哈希表结构可以保证键的唯一.不重复,需要重写键的hashCode方法和equals方法.
备注:Map接口当中的,含有两个泛型变量,在使用时,要为两个泛型变量赋予数据类型,两个泛型变量的数据类型可以相同,也可以不同,
Map接口当中的常用API方法<K,V>
常用方法如下:
-
public V put(K key,V value):把制定的键与制定的值添加到Map集合当中
-
public V remove(Object key):把制定的键所对应的键值对元素从Map集合中删除,返回的是被删除的value值
-
public V get(Object key):根据指定的键值获得在Map集合中对应的值
-
public Set<K> keySet():获取Map集合当中的所有的Key值,存储到一个Set集合当中
-
public Set<Map.Entry<K,V>> entrySet():获取到Map集合当中的所有的键值对对象的集合(Set集合)
不同于单列数据结构Collection接口拥有Set和List两个接口实现接口和一大堆的实现集合类
Map的实现类中常用的实现集合类只有三个
HashMap 可以存储null键,null 值 其他和Collecition的Map集合一样,是无序的(输入和输出的顺序不一样),可使用EntrySet把Map集合中的所有元素拿出来放入但数据结果的Set集合中,每一歌Entry都是一对,相当于类类型
Hashtable 不可以存储Null键,null值
LinkedHashMap 和上面相比 可存储Null和NULL值并且多了一条链表存储顺序,所以他是有序的,可使用迭代 Entry 高级for循环