Map集合

2020-08-05  本文已影响0人  还是那个没头脑

Map集合概述和特点

Map集合概述

interface Map<K,V> K:键的类型;V:值的类型

Map集合特点

Map接口下的集合与Collection接口下的集合对比

Map常用子类

HashMap

Java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>接口

HashMap的特点:
1.HashMap集合底层是哈希表:查询速度特别快
JDK1.8之前:数组+单向链表
JDK1.8之后:数组+单向链表/红黑树(链表的长度不超过8,提高查询速度)
2.HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致

LinkedHashMap

java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合

LinkedHashMap的特点:
1.LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
2.LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的

Map接口中的常用方法

V put(K key,V value) 添加元素
V remove(Object key) 根据键删除键值对元素
void clear() 移除所有的键值对元素
boolean containsKey(Object key) 判断集合是否包含指定的键
boolean containsValue(Object value) 判断集合是否包含指定的值
boolean isEmpty() 判断集合是否为空
int size() 集合的长度,也就是集合中键值对的个数

Map集合遍历键找值方式

Map集合的第一种遍历方式:通过键找值的方式

Map集合中的方法:
Set<K> keySet() 返回此映射中包含的键的 Set 视图。

实现步骤:
1.使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中
2.遍历set集合,获取Map集合中的每一个key
3.通过Map集合中的方法get(key),通过key找到value

Map集合遍历的第二种方式:使用Entry对象遍历

Map集合中的方法:
Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 试图

实现步骤:
1.使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存储到一个Set集合中
2.遍历Set集合,获取每一个Entry对象
3.使用Entry对象中的方法getKey()和getValue()获取键与值

LinkedHashMap集合

java.util.LinkedHashMap<K,V> entends HashMap<K,V>

Map 接口的哈希表和链接 列表实现,具有可预知的迭代顺序。

底层原理:
哈希表+链表(记录元素的顺序)

Hashtable集合

Java.util.Hashtable<K,V>集合 implements Map<K,V>接口

Hashtable:底层也是一个哈希表,似乎一个线程安全的集合,是单线程集合,速度慢
HashMap: 底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快

HashMap集合(之前学的所有集合):可以存储null值,null键
Hashtable集合,不能存储null值,null键

Hashtable和Vector集合一样,在JDK1.2版本之后被更先进的集合(HashMap,ArrayList)取代了
Hashtable的子类Properties依然活跃在历史舞台
Properties集合是一个唯一和IO流相结合的集合

JDK9对集合添加的优化_of方法

JDK9的新特性:
List接口,Set接口,Map接口:里面增加了一个静态的方法of,可以给集合一次性添加多个元素
static <E> List<E> of (E... elements)

使用前提:
当集合中存储的元素的个数已经确定,,不在改变时使用

注意:
1.of方法只适用于List接口,Set接口,Map接口,不适用于接口的实现类
2.of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常
3.Set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常

上一篇 下一篇

猜你喜欢

热点阅读