news 2026/6/14 15:40:54

【Java 入门 Day21】 集合篇(下):Map 接口,Java 里的 “键值对收纳盒”!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Java 入门 Day21】 集合篇(下):Map 接口,Java 里的 “键值对收纳盒”!

家人们!上两篇咱们唠了 List、Set,今天必须把 Map 接口这个开发里的 “高频工具人” 给盘明白!HashMapHashtableTreeMap,这些写代码天天见的键值对集合,看完这篇你再也不用对着它们的区别抓耳挠腮了!


七、Map 接口:存储键值对的 “字典收纳盒”

Map接口和Collection接口不一样,它存的是键值对(key-value),相当于 Java 里的字典,一个 key 对应一个 value,特点超明显:

  • 键(key):无序、无下标、不允许重复,就像字典里的单词,不能重复。
  • 值(value):无序、无下标、允许重复,就像字典里的解释,可以重复。

1. Map 的核心方法,开发必背!

  • put(K key, V value):往 Map 里添加键值对,如果 key 不存在,直接添加,返回null;如果 key 已经存在,新的 value 会覆盖旧的,返回被覆盖的旧 value。
  • remove(K key):根据 key 删除对应的键值对,返回被删掉的 value。
  • get(K key):根据 key 获取对应的 value,开发里最常用的方法。
  • containsKey(K key):判断 Map 里有没有指定的 key。
  • containsValue(V value):判断 Map 里有没有指定的 value。
  • size():获取 Map 里键值对的个数。

2. Map 的实现类,面试必背区别!

(1)HashMap:开发里最常用的 Map 实现类

HashMap是开发里最常用的 Map 实现类,底层是哈希表实现的:

  • JDK1.2 版本,线程不安全,运行效率高。
  • 允许null作为 key 和 value,比如HashMap里可以存null -> "test"
  • 重点:自定义类型的对象当 key 的话,必须重写hashCode()equals()方法,不然没法保证 key 不重复。

(2)Hashtable:HashMap 的 “老大哥”,线程安全但慢

Hashtable是 JDK1.0 版本的老古董,和HashMap功能类似:

  • 线程安全,但运行效率低,开发里现在基本不用了。
  • 不允许null作为 key 和 value,存了直接报错。

(3)Properties:Hashtable 的子类,专门读配置文件

PropertiesHashtable的子类,要求 key 和 value 都是String类型,开发里通常用来读取配置文件,比如.properties文件,超方便。

(4)TreeMap:自带排序的 Map 实现类

TreeMapSortedMap的实现类,会对 key 自动排序,特点:

  • 按 key 的自然顺序排序,自定义类型的对象当 key 的话,必须实现Comparable接口,或者用Comparator比较器指定排序规则。

(5)LinkedHashMap:有序的 HashMap

LinkedHashMapHashMap的子类,按添加顺序存储键值对,相当于 “有序的 HashMap”。

面试题:HashMap 和 Hashtable 的区别?

3. Map 的三种遍历方式,开发常用!

Map 的遍历方式主要有三种,给你唠明白:

  1. 键遍历:通过keySet()获取所有 key,再用get(key)拿 value:

    java运行

    Set<K> keySet = map.keySet(); for(K key : keySet){ V value = map.get(key); }
  2. 值遍历:通过values()获取所有 value,直接遍历:

    java运行

    Collection<V> values = map.values(); for(V value : values){ // 直接操作value就行 }
  3. 键值对遍历:通过entrySet()获取所有键值对(Map.Entry),再用getKey()getValue()拿键和值:

    java运行

    Set<Map.Entry<K,V>> entrySet = map.entrySet(); for(Map.Entry<K,V> entry : entrySet){ K key = entry.getKey(); V value = entry.getValue(); }

集合体系总结:一张图看懂所有集合

给你整理了集合体系的核心结构,看完再也不会乱了:

  • Collection(单列集合)
    • List(有序可重复):ArrayListLinkedListVector
    • Set(无序不重复):HashSetTreeSetLinkedHashSet
  • Map(双列集合,键值对):HashMapHashtableTreeMapLinkedHashMapProperties

好了家人们!Java 里的集合体系,从 List、Set 到 Map,全给你扒得明明白白了!再也不用写代码的时候对着集合的实现类抓耳挠腮了!要是还有啥没看懂的地方,评论区唠唠,我给你掰开揉碎了讲明白!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 15:33:54

AI外贸自动拓客哪家更稳定

在当前的市场环境中&#xff0c;对于希望利用AI技术进行外贸自动拓客的企业来说&#xff0c;选择一个稳定且可靠的服务提供商至关重要。位于广东省广州市的大迈国际电子商务广州有限公司&#xff08;以下简称“大迈国际”&#xff09;以其卓越的专业性和优质的服务&#xff0c;…

作者头像 李华
网站建设 2026/6/14 15:24:55

MPC8272 SCC串行控制器UART与HDLC模式配置与实战解析

1. MPC8272 SCC串行通信控制器概览在嵌入式系统&#xff0c;尤其是网络通信和工业控制领域&#xff0c;串行通信是连接设备、传输数据的基石。飞思卡尔&#xff08;现恩智浦&#xff09;的MPC8272 PowerQUICC II处理器&#xff0c;作为一款经典的通信处理器&#xff0c;其核心优…

作者头像 李华
网站建设 2026/6/14 15:24:52

MPC8272 PowerQUICC II嵌入式通信处理器架构解析与驱动开发实战

1. 项目概述&#xff1a;为何MPC8272 PowerQUICC II仍是嵌入式通信设计的经典之选在嵌入式网络与通信设备领域&#xff0c;尤其是路由器、交换机、工业网关和电信接入设备中&#xff0c;处理器的选择往往决定了系统的性能上限和功能边界。飞思卡尔&#xff08;现恩智浦&#xf…

作者头像 李华
网站建设 2026/6/14 15:23:12

暗黑破坏神2存档修改器终极指南:5分钟掌握角色定制技巧

暗黑破坏神2存档修改器终极指南&#xff1a;5分钟掌握角色定制技巧 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否厌倦了在暗黑破坏神2中反复刷装备的枯燥过程&#xff1f;是否想要尝试不同…

作者头像 李华