如何在 Java 中创建键值对映射

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本教程将指导你完成在 Java 中创建和使用 Map 数据结构的过程。Map 是 Java 中的一种基本数据结构,它允许你高效地存储和检索键值对。通过本教程的学习,你将对如何在 Java 应用程序中创建、初始化、访问和操作 Map 有深入的理解。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/oop("OOP") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/hashmap("HashMap") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/iterator("Iterator") subgraph Lab Skills java/collections_methods -.-> lab-413982{{"如何在 Java 中创建键值对映射"}} java/classes_objects -.-> lab-413982{{"如何在 Java 中创建键值对映射"}} java/oop -.-> lab-413982{{"如何在 Java 中创建键值对映射"}} java/hashmap -.-> lab-413982{{"如何在 Java 中创建键值对映射"}} java/iterator -.-> lab-413982{{"如何在 Java 中创建键值对映射"}} end

理解 Map 数据结构

在 Java 中,Map 数据结构是一种基本的集合,它允许你存储和检索键值对。它是 Java 集合框架的一部分,在各种编程场景中被广泛使用。

什么是 Map?

Map 是一个存储键值对集合的对象。Map 中的每个键必须是唯一的,并且用于访问相应的值。Map 中的值可以重复,但键必须是唯一的。

为什么使用 Map?

当你需要将唯一标识符(键)与一段数据(值)相关联时,Map 非常有用。这在许多编程任务中很常见,例如:

  • 缓存或查找表
  • 计算元素的频率
  • 存储配置设置
  • 表示数据库表

Map 的关键特性

  • 键值对Map 存储键值对的集合,其中每个键都是唯一的,并且相应的值与该键相关联。
  • 唯一键Map 中的键必须是唯一的。如果你尝试添加一个具有已存在键的新键值对,新值将替换旧值。
  • 异构类型Map 中的键和值可以是不同的数据类型。例如,你可以有一个 Map<String, Integer>,其中键是字符串,值是整数。
  • 空键和值:根据具体实现,Map 可以将 null 作为键或值。
  • 有序与无序:不同的 Map 实现为键值对提供不同的排序保证。例如,TreeMap 按排序顺序维护键,而 HashMap 不保证任何特定顺序。

理解 Map 数据结构的基本概念和特性对于在 Java 程序中有效地使用它至关重要。

创建和初始化 Map

声明 Map

在 Java 中,你可以使用以下语法声明一个 Map 变量:

Map<键类型, 值类型> 映射名称 = new 映射实现<>();

这里,键类型值类型 分别是键和值的数据类型,而 映射实现 是你想要使用的特定 Map 实现,例如 HashMapTreeMapLinkedHashMap

初始化 Map

在 Java 中有几种初始化 Map 的方法:

  1. 空 Map

    Map<String, Integer> 空映射 = new HashMap<>();
  2. 具有初始容量的 Map

    Map<String, Integer> 具有初始容量的映射 = new HashMap<>(16);
  3. 具有初始容量和加载因子的 Map

    Map<String, Integer> 具有初始容量和加载因子的映射 = new HashMap<>(16, 0.75f);
  4. 具有初始键值对的 Map

    Map<String, Integer> 具有初始键值对的映射 = new HashMap<>() {{
        put("apple", 1);
        put("banana", 2);
        put("cherry", 3);
    }};
  5. 从另一个 Map 创建的 Map

    Map<String, Integer> 原始映射 = new HashMap<>();
    // 填充原始映射
    Map<String, Integer> 新映射 = new HashMap<>(原始映射);
  6. 从键值对列表创建的 Map

    List<键值对<String, Integer>> 对列表 = Arrays.asList(
        new 键值对<>("apple", 1),
        new 键值对<>("banana", 2),
        new 键值对<>("cherry", 3)
    );
    Map<String, Integer> 从列表创建的映射 = 对列表.stream()
      .collect(Collectors.toMap(键值对::getKey, 键值对::getValue));

这些是在 Java 中创建和初始化 Map 最常见的方法。实现和初始化方法的选择取决于你的具体需求和数据的特性。

访问和操作 Map 元素

访问 Map 元素

创建 Map 之后,你可以使用以下方法访问其元素:

  1. 通过键获取值

    Map<String, Integer> 水果映射 = new HashMap<>();
    // 填充映射
    Integer 值 = 水果映射.get("apple");
  2. 检查键是否存在

    boolean 包含键 = 水果映射.containsKey("banana");
  3. 检查值是否存在

    boolean 包含值 = 水果映射.containsValue(2);
  4. 遍历 Map 条目

    for (Map.Entry<String, Integer> 条目 : 水果映射.entrySet()) {
        String 键 = 条目.getKey();
        Integer 值 = 条目.getValue();
        // 对键和值进行操作
    }
  5. 遍历 Map 键

    for (String 键 : 水果映射.keySet()) {
        // 对键进行操作
    }
  6. 遍历 Map 值

    for (Integer 值 : 水果映射.values()) {
        // 对值进行操作
    }

操作 Map 元素

你还可以使用以下方法修改 Map 的内容:

  1. 添加新的键值对

    水果映射.put("orange", 4);
  2. 更新现有键的值

    水果映射.put("apple", 5);
  3. 移除键值对

    水果映射.remove("banana");
  4. 清空 Map

    水果映射.clear();
  5. 合并值

    水果映射.merge("apple", 2, Integer::sum);

这些方法使你能够高效地访问、修改和操作存储在 Map 中的键值对。

总结

在本 Java 教程中,你已经学习了如何创建和使用 Map,这是一种用于存储和检索键值对的通用数据结构。你探索了初始化 Map、访问和修改其元素的各种方法,以及在 Java 编程中利用 Map 的强大功能。有了这些知识,你现在可以自信地将 Map 纳入你的 Java 项目中,提高数据管理的效率和组织性。