JavaSE基础-集合之Map

382 阅读2分钟

一、Map集合

0. Map接口

0). 概述

java.util.Map<K,V>

  1. 双列集合
  2. K不能重复
  3. K,V一一对应,且两者数据类型可相同,可不同

二、Map接口常用实现类

常用实现类有

HashMap<K,V>

LinkedHashMap<K,V>

HashTable<K,V>

1.HashMap<K,V>

1).特点

a. 基于哈希表Map接口实现
b. 无序
Tips: 内部存储根据哈希值记录,会根据key的哈希值自动排序 ,数据量多此条性质失效

c. 不同步,多线程
d. 键、值可为null

2). 子类LinkedHashMap

a.哈希表+链表实现
b.有序
c.继承了HashMap,类似HashSetLinkedHashSet的关系

3).存储自定义对象时,由于Key不能重复,需要重写其hashCode()和equals()方法

重写原因是如果不重写,会出现程序无法识别两者是同一个对象的问题,同时重写原因是为了防止出现哈希值冲突而内容不同或者内容相同哈希值不同的情况

2.HashTable<K,V>

1).特点

a. 基于哈希表Map接口实现
b. 无序
c. 同步,单线程,线程安全,速度
d. 键、值不可为null
e. 因和Vector一样单线程速度慢被取代
f. 其子类Properties因是唯一和IO流相结合的集合而存在

三、Map接口常用方法

1.put(K key,V value),返回value

如果key已经存在,会用新的value替换原来的value

2.get(Object key),返回value

3.ContainsKey(Object key),返回boolean

4.ContainsValue(Object value),返回boolean

5. keySet(),返回映射中包含键的Set视图

Key全取出放入Set中 ,之后如果遍历Set通过get(key)方法可以完成遍历Map集合(键找值的方式)

6. entrySet(),返回映射中包含映射关系的Set视图

1). Entry类

a.嵌套类

Map.Entry<K,V>:Map接口中的内部接口 作用是:

当Map集合一创建,就会在Map集合中创建一个Entry对象,用来记录两者映射关系

b.映射项(键值对)

c.含有getKey()和getValue()方法

2). entrySet()方法

map对象中的多个Entry对象取出,放入Set集合中,之后通过Entry对象的getKey()getValue()遍历集合

Set<Map.Entry<String,Integer>> set = map.entrySet();

六、JDK9新特性

List接口、Set接口、Map接口增加了一个新的静态方法of,可以一次性给集合添加多个元素,但不适于其实现类,如ArrayList等,同时,集合后期不可修改(增加元素等),添加的元素需复合集合的特点(SetMap中不可添加重复元素)