转载

JavaSE基础-集合之Map

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. 无序

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 中不可添加重复元素)

原文  https://juejin.im/post/5efef2095188252e703ab572
正文到此结束
Loading...