Java集合之双列集合Map

一:双列集合Map
在这里插入图片描述
1、Map集合概念:Map集合是一个双列集合,它是一种键-值对(key-value)集合,其中每个键映射到一个值。
2、Map集合特点:
1)Map集合中一个元素包含两个值(一个key,一个value),key与value值是一一对应的。
2).Map集合中的元素,key和value中的的数据类型可以相同,也可以不同。
3).Map中的元素,key是不允许重复的,但是value可以重复。
3.Map集合提供如下方法:
在这里插入图片描述
方法测试代码如下:
在这里插入图片描述
3、Map集合的遍历----两种方式
1)第一种遍历方式(KeySet()):通过键找值的方式,利用Map集合中的方法: Set keySet() 返回此映射中包含的键的 Set 视图。
实现步骤:
(1)使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个set集合中。
(2)遍历Set集合,获取Map集合中的每一个key。
(3)通过Map集合中的方法get(key),通过key找到value。

2)第二种方式(entrySet()):使用Entry对象遍历。Map集合中的方法:Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图。
实现步骤:
(1)使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存储到一个Set集合中。
(2)遍历Set集合,获取每一个Entry对象。
(3)使用Entry对象中的方法getKey()和getValue()获取键与值。
Map遍历测试代码如下:
在这里插入图片描述
4.Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。

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

三.Hashtable集合
1)
HashTable底层是一个哈希表,是一个线程安全的集合,单线程,速度慢。
HashMap 底层是一个哈希表,是一个线程不安全的集合,多线程,速度快。
2)
HashMap(之前所有集合) 可以存null,甚至null的键
HashTable 不可以存储null值

测试代码如下:
在这里插入图片描述

四.LinkedHashMap集合
1.linkedHashMap继承于HashMap,是HashMap子类,java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合。
1)LinkedHashMap的特点:
2)LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
3)LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的
在这里插入图片描述
实例:
定义一个存储省的数组,作为HashMap中的key值存储。
定义一个存储市的数组,作为HashMap中的value值存储。
并且省和市一一对应。
在这里插入图片描述

PS:
put 方法表示放入一个键值对,如果键已存在则_ 覆盖____,如果键不存在则
添加
remove 方法接受__1_个参数,表示___删除_____________。
get 方法表示_获得key 对应的_ value____,get 方法的参数表示_key__,返回值表示_value_。
要想获得Map 中所有的键,应该使用方法____keySet______,该方法返回值类型为__Set___。
要想获得Map 中所有的值,应该使用方法___values________,该方法返回值类型为__Collections____。
要想获得Map 中所有的键值对的集合,应该使用方法___entrySet________,该方法返回一个_Map.Entry____类型所组成的Set。

猜你喜欢

转载自blog.csdn.net/weixin_42223850/article/details/88919915