Map类

27 篇文章 0 订阅
22 篇文章 0 订阅

java.util.Map<K,V>集合

Map集合特点:
1、Map集合是一个双列集合,一个元素包含两个值(一个Key,一个value)
2、Map集合中的元素,key和value的数据类型可以相同也可以不同
3、Map集合中的元素,key是不允许重复的,value是可以重复的
4、Map集合中的元素,key和value是一一对应的

java.util.HashMap<K,V>集合implements Map<K,V>接口
HashMap集合的特点:

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

java.util.LinkedHashMap<k,v>集合 extends HashMap<K,V>集合
LinkedHashMap集合的特点:

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

Map就的常用方法
1、public V put (k key, V value); 把指定的键值对添加到Map集合当中
返回值:V
存储键值对时,key不重复,返回值V还null
存储键值对时,key重复,会使用新的value替换Map中重复的value,返回值是被替换的value值
2、public V remove(object key);把指定的键所对应的的键值对元素,在Map集合中删除,返回删除的元素的值。
返回值 V
key存在,V返回被删除的值
key不存在,V返回null
3、public V get(Object key) 根据指定的键值,在map集合中获取对应的值。
返回值:
key存在:返回对应的value值
key不存在:返回null
4、public boolean containskey(object key) 判断集合中是否含有指定的键
包含返回true,不包含返回false
遍历map集合的两种方法:
一、通过键找值的方式
map中的方法:Set keySet() 返回此映射中包含的键的Set视图
实现步骤:
1、使用map集合中的方法,keySet(),把map集合所有的key取出来。存储到一个Set集合中
2、遍历set集合,获取Map集合中的每一个key值
3、通过map集合中的方法get(key)获取对应的每一个value值
二、通过Map接口中有一个内部类Entry—Map.Entry<K,V>
作用:当map集合一创建,那么就会在map集合中创建一个Entry对象,用来记录键与值(键值对对象,键与值的映射关系)
实现步骤:
1、创建一个map元素就有一个对应的Entry生成,并存储键值对对象
2、用一个set集合将map集合中的Entry存储起来,用到 Set<Map.Entry<K,V>> entrySet() 方法。
3、遍历set集合,获取每一个Entry对象
4、用Entry对象的getKey方法或者getValue方法获取键值对。

HashMap存储自定义类型键值
Map集合保证key是唯一的:作为可以的元素,必须重写hashCode和equals方法,以保证key是唯一的
LinkedHashMap集合
java.util.LinkedHashMap<K,V> extends HashMap<K,V>
Map接口的哈希表和链接列表实现,具有可预知的迭代顺序
底层原理:哈希表+链表(记录元素的顺序)
HashTable集合
java.util.HashTable<K,V>集合 implement map<K,V> 接口
HashTable底层是哈希表,是一个线程安全的集合,是单线程,速度慢
HashTable不能存储null键和null值
集合添加的优化方法-of
jdk9的新特性:
List接口,Set接口,Map接口,里面增加一个静态的方法of。可以给集合一次性添加多个元素。
static List of(E…elements)
使用前提:
当集合中存储的元素个数确定时,不在修改时使用。
注意:
1、of方法只适用于list接口,Set接口,Map接口,不适用于这几个接口的实现类
2、of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常。
3、set接口和map接口在调用of方法时,不能有重复的元素,会抛出异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值