一、Map集合概述
现实生活中,我们常会看到这样一种集合,IP
地址与主机 名,身份证号与个人,系统用户名与系统对象等等,这种一一对应的关系,就叫做映射。java
提供了专门的集合用来存放这种对象的关系,即java.util.Map
接口。
我们通过查看Map
接口描述,发现Map
接口下的集合与Collection
接口下的集合,他们存储数据的形式不同,如下图所示:
🧨🧨🧨🧨🧨🧨总结
Collection
中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的存储方式。Map
中的集合,元素是成对存在的(理解为夫妻关系),每个元素由键与值两部分构成,通过键可以找到对应元素的值。Collection
中的集合称为单列集合,Map
中的集合称为双列集合。- 需要注意的是,
Map
中的集合不能包含重复的键,值可以重复,每个键只能对应一个值。
二、Map常用子类
java.util.Map<k,v>
集合 implements Map<k,v>
接口
🧨🧨🧨🧨🧨HashMap集合的特点:
HashMap
集合底层是哈希表,查询的速度特别的快JDK1.8
之前:数组+单向链表JDK1.8
之后:数组+单向链表/红黑树(链表的长度超过8):提高查询的速度hashMap
集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致java.util.linkedHashMap<k,v>
集合extends HashMap<k,v>
集合
🧨🧨🧨🧨🧨linkedHashMap
的特点:
linkedHashMap
集合的底层是哈希表+链表linkedHashMap
集合是一个有序的集合,存储元素的取出元素的顺序都是一致的
三、Map接口中常用的方法
四、Entry键值对对象
作用:当Map集合一创建,那么就会在Map集合中创建一个Entry对象,用来记录键与值(键值对对象。键与值的映射关系)
Map
集合遍历的第二种方式:使用Entry
对象遍历
Map
集合中的方法:
Set<Map,Entry<K,V>> entrySet()
返回此映射中包含的映射关系的Set视图
实现步骤:
- 使用
Map
集合中的方法entrySet()
,把Map
集和中的多个Entry
对象取出来,存储到Set
集合中 - 遍历
Set
集合,获取每一个Entry
对象 - 使用
Entry
对象中的方法getKey()
和getValue()
获取键与值
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * @author :CaiCai * @date : 2022/4/14 14:56 */ /* Map集合遍历的第二种方式:使用Entry对象遍历 Map集合中的方法: Set<Map,Entry<K,V>> entrySet() 返回此映射中包含的映射关系的Set视图 实现步骤: 使用Map集合中的方法 entrySet(),把Map集和中的多个Entry对象取出来,存储到Set集合中 遍历Set集合,获取每一个Entry对象 使用Entry对象中的方法getKey()和getValue()获取键与值 */ public class demoMap { public static void main(String[] args) { //创建Map集合对象 Map<String,Integer> map=new HashMap<>(); map.put("赵丽颖",168); map.put("张三",179); map.put("李四",170); //使用Map集合中的方法 entrySet(),把Map集和中的多个Entry对象取出来,存储到Set集合中 Set<Map.Entry<String,Integer>> set=map.entrySet(); //使用迭代器遍历Set集合 Iterator<Map.Entry<String,Integer>> it= set.iterator(); while(it.hasNext()){ Map.Entry<String,Integer> entry=it.next(); //使用entry对象中的方法getkey()和getValue()获取键值 String key=entry.getKey(); Integer value=entry.getValue(); System.out.println(key+"-"+value); } } }