集合详解之(五)Map集合

🐒个人主页

🏅JavaSE系列专栏

📖前言:

本篇博客主要以介绍Map集合接口的实现类HashMap、HashTable、TreeMap的常用方法

🎀Map集合的介绍

Map集合是 键值对 -双列集合,它的雏形是离散数学中的二元有序对<k,v>,它是一种映射关系,其中的键列抽离出来就是一个Set集合,所以键·是不能重复的,但是值可以重复。

🪅如何保证键的不重复性?(equals()与hashCode()方法的联用)

🎯 equals() 的使用:(通常指内容是否相等,去重时常常可以与重写hashCode()连用,用来更高效地比较对象内容是否相等)

🍅如果没有自己的equals()方法,默认调用Object类中的equals()方法。而Object类中的equals()方法等价于 ==作用,故想要比较对象里内容是否相等时需要重写Object类中的equals()方法。

【注】Object类中的hashCode()方法拿到的也是内存地址

🍅如果已经重写过了Object类中的equals()方法,需注意:重写equals()是对象里一个一个内容来比较的,虽然安全性高,但效率低;而重写hashCode()是把对象所有内容计算出一个(int类型)哈希值直接进行数值比较,虽然高效,但有安全隐患(可能不同内容的对象两个计算出来的哈希值相同–《Hash冲突》eg:“通话”~“重地”)。

🎯所以去重时可以先判断对象内容计算出的哈希值是否相等,如果哈希值相等,再调用重写equals()进行最后的检验

HashMap的存储底层源码超详解

🎀HashMap集合及常用方法

HashMap集合存放数据-键值对<k,v>和HashSet存放元素一样是无序的(即不按照插入顺序排序),它是按照键的hash值来排序的。通过键可以找到值。

构造方法方法内容介绍
HashMap()📖【构造一个空的 HashMap ,默认初始容量为 16 和默认负载系数 0.75 (当然,这两个属性也可以自定义)】
HashMap(Map集合 m)📖【可以将Map集合m或Map集合的实现类m进行转化为HashMap集合】
常用方法 方法内容介绍
int size()📖【返回Map集合键值对数量】
boolean isEmpty()📖【判断Map集合是否为空】
void clear()📖【清空集合】
boolean containsKey(Object key)📖【集合中键是否包含key,返回布尔值】
boolean containsValue(Object value)📖【集合中值是否包含value,返回布尔值】
Set<Map.Entry<K,V>> entrySet()📖【返回一个entrySet集合,利用增强for循环来实现对<k,v>进行操作】
void forEach(lambda表达式)📖【对Map集合的k,v进行遍历操作】
以下为forEach(lambda表达式)的展示实例在这里插入图片描述
V get(Object key)📖【通过键key获取Map集合中对应的值】
Set keySet()📖【把Map集合中的键列变为Set单列集合】
Collection values()📖【把Map集合中的值列变为单列集合】
V put(K key, V value)📖【向Map集合中添加<k,v>元素】
void putAll(Map集合 m)📖【把另外一个Map集合m或Map集合的实现类m里所有<k,v>元素添加到自身Map集合中】
V remove(Object key)📖【删除Map集合中对应键key的<k,v>键值对】
boolean remove(Object key, Object value)📖【删除Map集合中的对应键值对<k,v>,返回一个布尔值】
boolean replace(K key, V oldValue, V newValue)📖【修改Map集合中的对应键值对<k,v>为<k,v1>,返回一个布尔值】

🎀Map.entrySet()集合及常用方法

构造方法方法内容介绍
Set<Map.Entry<K,V>> Map对象.entrySet()📖【将map对象转化为entey对象】
entry对象支持用增强for循环在这里插入图片描述
entry对象支持用迭代器在这里插入图片描述
常用方法 方法内容介绍
K getKey()📖【在遍历中获取键】
V getValue()📖【在遍历中获取值】
V setValue(V value)📖【在遍历中修改值】

🎀HashTable集合

Hashtable就相当于synchronized 线程安全的HashMap,可以类比“String与StringBuffer”、“ArrayList与Vector”之间的关系,但是需要注意的是,Hashtable中存储的键不能为null,而HashMap中的键可以存储null
,所以这里就不单独介绍方法啦🐒

🎀TreeMap集合及常用方法

构造方法方法内容介绍
TreeMap()📖【空集合·自然排序】
TreeMap(Comparator<? super K> comparator)📖【利用Lambda表达式实现自定义排序·】
构造方法-lambda自定义排序 --实例在这里插入图片描述
TreeMap(Map<? extends K,? extends V> m)📖【构造方法:继承排序规则,继承元素】
构造方法(Map集合)继承排序规则、集合元素 --实例在这里插入图片描述
常用方法 方法内容介绍
void clear()📖【清空集合】
boolean containsKey(Object key)📖【是否包含键key】
boolean containsValue(Object value)📖【是否包含值Value】
K ceilingKey(K key)📖【返回此集合中>=key的最小键,如果没有此元素,则返回 null 】
Map.Entry<K,V> ceilingEntry(K key)📖【返回此集合中>=key的最键值对,如果没有此元素,则返回 null 】
K higherKey(K key)📖【返回此集合中>key的最小键,如果没有此元素,则返回 null 】
Map.Entry<K,V> higherEntry(K key)📖【返回此集合中>key的最小键值对,如果没有此元素,则返回 null 】
Map.Entry<K,V> floorEntry(K key)📖【返回(最后一个元素)最大键值对】
Set<Map.Entry<K,V>> entrySet()📖【将map对象转化为entey对象】
Map.Entry<K,V> firstEntry()📖【返回(最后一个元素)最大键值对】
K firstKey()📖【返回(第一个元素)最小键】
Map.Entry<K,V> lastEntry()📖【返回(最后一个元素)最大键值对】
K floorKey(K key)📖【返回(最后一个元素)最大键】
void forEach(lambda表达式)📖【对Map集合的k,v进行遍历操作】
以下为forEach(lambda表达式)的展示实例在这里插入图片描述
V get(Object key)📖【通过键key获取Map集合中对应的值】
SortedMap<K,V> headMap(K toKey)📖【返回一个严格小于<toKey的部分键值对–Map集合】
headMap(K toKey)方法实例在这里插入图片描述
Set keySet()📖【把Map集合中的键列变为Set单列集合】
Map.Entry<K,V> lastEntry()📖【最后一个键值对】
V put(K key, V value)📖【加入键值对】
void putAll(Map集合 m)📖【把另外一个Map集合m或Map集合的实现类m里所有<k,v>元素添加到自身Map集合中】
V remove(Object key)📖【删除Map集合中对应键key的<k,v>键值对】
boolean replace(K key, V oldValue, V newValue)📖【修改Map集合中的对应键值对<k,v>为<k,v1>,返回一个布尔值】
int size()📖【集合大小】
Collection values()📖【把Map集合中的值列变为单列集合】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

信计2102罗铠威

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

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

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

打赏作者

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

抵扣说明:

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

余额充值