news 2026/4/18 8:53:00

java基础-Map接口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java基础-Map接口

在Java中,Map是一个非常重要的接口,它表示键值对(Key-Value)的映射集合。Map 不允许重复的键,每个键最多只能映射到一个值。

Map 接口的主要特点

  • 键唯一性:不允许重复的键

  • 键值对存储:每个元素包含一个键和一个值

  • 无序(某些实现类有序):不保证元素的顺序

常用的 Map 实现类

1. HashMap

import java.util.*; // 创建 HashMap Map<String, Integer> hashMap = new HashMap<>(); // 添加元素 hashMap.put("Alice", 25); hashMap.put("Bob", 30); hashMap.put("Charlie", 28); // 获取元素 int age = hashMap.get("Alice"); // 25 // 遍历 Map for (Map.Entry<String, Integer> entry : hashMap.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); }

2. LinkedHashMap

// 保持插入顺序 Map<String, Integer> linkedHashMap = new LinkedHashMap<>(); linkedHashMap.put("Zoe", 22); linkedHashMap.put("Alice", 25); linkedHashMap.put("Bob", 30); // 遍历时保持插入顺序 for (String key : linkedHashMap.keySet()) { System.out.println(key); // Zoe, Alice, Bob }

3. TreeMap

// 按键的自然顺序或自定义比较器排序 Map<String, Integer> treeMap = new TreeMap<>(); treeMap.put("Zoe", 22); treeMap.put("Alice", 25); treeMap.put("Bob", 30); // 遍历时按键排序 for (String key : treeMap.keySet()) { System.out.println(key); // Alice, Bob, Zoe }

常用方法

Map<String, String> map = new HashMap<>(); // 添加元素 map.put("key1", "value1"); map.put("key2", "value2"); // 获取元素 String value = map.get("key1"); // 检查键是否存在 boolean exists = map.containsKey("key1"); // 检查值是否存在 boolean valueExists = map.containsValue("value1"); // 删除元素 map.remove("key1"); // 获取大小 int size = map.size(); // 检查是否为空 boolean isEmpty = map.isEmpty(); // 获取所有键的集合 Set<String> keys = map.keySet(); // 获取所有值的集合 Collection<String> values = map.values(); // 获取所有键值对的集合 Set<Map.Entry<String, String>> entries = map.entrySet(); // 清空Map map.clear();

Java 8+ 的新特性

Map<String, Integer> map = new HashMap<>(); // putIfAbsent - 如果键不存在则添加 map.putIfAbsent("key1", 100); // compute - 计算新值 map.compute("key1", (k, v) -> v == null ? 0 : v + 1); // computeIfAbsent - 如果键不存在则计算新值 map.computeIfAbsent("key2", k -> 50); // computeIfPresent - 如果键存在则计算新值 map.computeIfPresent("key1", (k, v) -> v * 2); // merge - 合并值 map.merge("key1", 10, (oldValue, newValue) -> oldValue + newValue); // forEach - 遍历 map.forEach((k, v) -> System.out.println(k + ": " + v)); // getOrDefault - 获取值或默认值 int value = map.getOrDefault("nonexistent", 0);

线程安全的 Map

ConcurrentHashMap

import java.util.concurrent.ConcurrentHashMap; // 线程安全的 HashMap Map<String, Integer> concurrentMap = new ConcurrentHashMap<>(); concurrentMap.put("key1", 100);

Collections.synchronizedMap

// 将普通 Map 转换为线程安全的 Map Map<String, Integer> syncMap = Collections.synchronizedMap(new HashMap<>());

使用示例

public class MapExample { public static void main(String[] args) { // 统计单词出现次数 String text = "hello world hello java world java programming"; String[] words = text.split(" "); Map<String, Integer> wordCount = new HashMap<>(); for (String word : words) { wordCount.merge(word, 1, Integer::sum); } // 输出结果 wordCount.forEach((word, count) -> System.out.println(word + ": " + count)); } }

Map 是 Java 集合框架中非常实用的数据结构,广泛应用于缓存、配置管理、数据统计等场景。

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

Triton-Ascend编译链路深度解构-从DSL到NPU二进制的艺术

目录 摘要 &#x1f9e0; 一、编译链路&#xff1a;被90%开发者忽视的性能密码 ⚙️ 二、五层编译栈&#xff1a;昇腾NPU指令生成的完整旅程 &#x1f539; 2.1 全局架构视图 &#x1f539; 2.2 第一层&#xff1a;Triton DSL —— 高级抽象的起点 &#x1f539; 2.3 第二…

作者头像 李华
网站建设 2026/4/18 5:13:58

【每天学习一点算法 2025/12/18】对称二叉树

每天学习一点算法 2025/12/18 题目&#xff1a;对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 老规矩先来递归&#xff0c; 检查二叉树是否轴对称&#xff0c;我们是不是得比较根节点下面得两个子树是否是轴对称&#xff0c;那么我们只需要递归比较…

作者头像 李华
网站建设 2026/4/17 21:11:03

从核工业到精密装配:Haption力反馈设备的多元化应用场景

在机器人遥操作研究中&#xff0c;如何超越视觉局限&#xff0c;实现“所见即所感”的精准控制是一大挑战。Haption Virtuose 6D TAO工业级力反馈设备&#xff0c;通过引入关键的力觉维度&#xff0c;为这一领域提供了高效的解决方案。 核心优势&#xff1a;硬核性能与广泛兼容…

作者头像 李华
网站建设 2026/4/18 5:07:55

RAG技术深度解析:工程师必学必收藏的完整指南

RAG技术深度解析&#xff1a;工程师必学必收藏的完整指南 文章全面介绍RAG&#xff08;检索增强生成&#xff09;技术&#xff0c;从基本原理到实践应用。详细讨论索引构建、多路召回策略&#xff08;BM25、Embedding、Graph、CLIP&#xff09;、Rerank模型和Embedding训练方法…

作者头像 李华
网站建设 2026/4/18 5:10:18

小程序计算机毕设之基于小程序的高校学生公寓道闸管理平台的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/18 5:09:25

小程序计算机毕设之基于SpringBoot的宠物识别小程序的设计与实现基于springboot的ai识别宠物小程序(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华