Map 接口
1、Map、Collection 并列
2、Map 保存具有映射关系的数据:key - value(双列元素)
3、key、value 可以是任意引用数据类型,常用 String 对象作为 key
4、key 不允许重复,key 只允许一个 null,value 允许重复,value 允许多个 null
5、添加 key - value,若集合有相同 key,value 会被替换
6、key - value 存在单向一对一关系
7、无序(添加、取出顺序不一致)、无索引,不保证映射顺序
8、key - value 封装在 Node 对象,Node 是 HashMap 的静态内部类,Node 实现 Entry 接口,Entry 是 Map 的内部接口
9、key - value 编译类型:Map.Entry,运行类型:HashMap$Node
10、Map.Entry 特有方法
K getKey();
V getValue();
V setValue(V value);
为了方便遍历,提供如下方法
(1)返回 Map 中 key - value 映射的集合,编译类型:Set,运行类型:HashMap$EntrySet
Set<Map.Entry<K, V>> entrySet();
transient Set<Map.Entry<K,V>> entrySet;
(2)返回 Map 中只含 key 的集合,编译类型:Set,运行类型:HashMap$KeySet
Set<K> keySet();
(3)返回 Map 中只含 value 的集合,编译类型:Collection,运行类型:HashMap$Values
Collection<V> values();
遍历方式
Map<K, V> map = new HashMap<>();
1、key 的 Set 集合
Set<K> keySet = map.keySet();
(1)使用迭代器
Iterator<K> iterator = keySet.iterator();
while (iterator.hasNext()) {
K key = iterator.next();
}
(2)增强 for 循环
for (K key : keySet) {
访问key;
}
2、value 的 Collection 集合
Collection<V> values = map.values();
(1)使用迭代器
Iterator<V> iterator = values.iterator();
while (iterator.hasNext()){
V value = iterator.next();
}
(2)增强 for 循环
for (V value : values) {
访问value;
}
3、key - value 的 Set 集合
Set<Map.Entry<K, V>> entrySet = map.entrySet();
(1)使用迭代器
Iterator<Map.Entry<K, V>> iterator = entrySet.iterator();
while (iterator.hasNext()) {
Map.Entry<K, V> entry = iterator.next();
}
(2)增强 for 循环
for (Map.Entry<K, V> entry : entrySet) {
访问键值对;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战