[Map]的使用

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.HasMap集合底层是哈希表:查询速度非常快
JDK1.8之前:数组+ 单向链表
JDK1.8之后:数组+ 单项链表/红黑树(当查询的长度超过8时),提高查询效率
2.HashMap集合它是一个无序的集合,即存放进去的元素顺序与取出的元素顺序不一定一致
java.util.LinkedHashMap<k, v >集合 extends HashMap<k, v>集合
LinkedHashMap<k, v >的特点:
1.LinkedHashMap集合底层是一个哈希表+链表(有链表就表示有序)
2.LinkedHashMap集合是一个有序的集合,存储进来的元素与取出的元素顺序相同
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
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()获取键值对

HashMap存储自定义类型键值
Map集合保证了key值的唯一性
作为key的元素,必须重写hashcode和equals方法,以保证key唯一
-----------------------------------------------------------------------------------------------
HashMap存储自定义类型键值
key:String类型
String类必须重写hashcode和equals方法,以保证key唯一
value:Person类型
value可以重复(同名同年龄的人视为同一人)

自定义Person类

在这里插入图片描述
当自定义类Person作为K值时,需要在person类中重写hascode和equals方法,
保证K值唯一性
在这里插入图片描述
java.util.LinkedHashMap <K,V> extends HashMap<k,v>
Map 接口的哈希值和链表列表的实现,具有可预知的迭代顺序
底层原理:
哈希表+ 链表(记录元素的顺序)
在这里插入图片描述
java.util.HashTable<k,v> implentments Maps<K,V)
hashtable:底层是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢
hashMap集合(之前学过的所有集合):可以存储null值,null键
hashtable不能存储null值,null键
hashtable和vactor集合一样,在jdk1.2版本之后被淘汰掉了,被<hashMap ,Arraylist>取代
hashtable的子类propertise依然活跃在历史舞台
propertise集合是一个唯一和io流相结合的集合
在这里插入图片描述
习题练习:
计算一个字符串中每个字符出现的个数
分析:
1.使用Scanner获取用户输入的字符串
2.创建Map集合,key是字符串中存储的字符,value是字符的个数
3.遍历字符串,获取每一个字符
4.使用获取到的字符,去Map集合判断是否存在
key存在:
通过字符(key),获取value数
value++
put(key,value)把新的value存储到Map集合中
key不存在:
put(key,1)
5.遍历集合,输出结果
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萧一品

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值