Java之集合(七)Map
转载请注明源出处:http://www.cnblogs.com/lighten/p/7327216.html
1.前言
按照顺序,本章本是要对Set的相关类进行介绍及讲解的。但是对于其实现有所了解的都应该知道,Set本身的代码十分简单,其实现都是通过Map来实现的,所以本章介绍一下Java中的Map接口及抽象类。
2.Map接口
除去JDK8添加的新特性不看,Map中定义的方法如下:
1.size():返回键值对个数
2.isEmpty():判断是否为空
3.containsKey(key):键的集合中是否存在所给键
4.containsValue(value):值的集合中是否存在所给值
5.get(key):获取指定键的值
6.put(key,value):存入一对键值对
7.remove(key):移除指定键的键值对
8.putAll(Map):将所给的键值对全部存入
9.clear():清除所有的键值对
10.keySet():将所有的键值以Set集合返回
11.values():返回所有值的集合
12.entrySet():返回键值对的Set集合
13.getOrDefault():如果该键存在(哪怕对应值为null),返回其值,否则返回所给默认值
14.putIfAbsent():如果所给键不存在或者存在对应的值为null,重新设置,否则返回其值
15.remove(key,value):如果所给的值与该键对应的值不相等就不移除该键。
16.replace(key, oldValue, newValue):如果键所对应的值与所给旧值相等就用新值替换。
17.replace(key, value):如果该键存在,就用新值替换。并返回之前的值。
上述所有方法,从getOrDefault就使用了JDK8的新特性,能在接口中实现默认方法。
3.Entry
Entry是map实现的一个关键数据结构(就是一个键值对对象),关于Entry的接口定义如下:
1.getKey():获取键值对的键
2.getValue():获取键值对的值
3.setValue():设置键值对的值
后面的方法都是JDK8相关内容,不进行讲解。
4.AbstractMap
抽象类的实现并没有多大参考价值,就像其它集合一样,大部分子类都覆盖了抽象父类的相关方法。
size方法就比较很有意思。其使用的是entrySet的大小,而开篇也说了Set是借助Map实现的,其实际上调用的又是Map的size()方法。如果按抽象父类这种写法,那么就死循环了。同样的还有clear方法。
containsValue或者key都是通过entrySet拿到所有的键值对遍历实现的,实现和其它集合的抽象父类基本一致。之后的get,remove等方法都是一样的原理。其余的方法也不再一一叙述,如果前面几章集合的类认真学习过,这个基本是一样的套路。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· 对象命名为何需要避免'-er'和'-or'后缀
· JDK 24 发布,新特性解读!
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· SQL Server如何跟踪自动统计信息更新?