在 Java 中使用哈希映射

哈希映射是在 Java 中存储结构化数据的一种有用方法。
1 位读者喜欢这篇文章。

在 Java 编程语言中,哈希映射是关联值的列表。Java 使用哈希映射来存储数据。如果你保存大量的结构化数据,了解可用的各种检索方法很有用。

创建哈希映射

通过导入和使用 HashMap 类,在 Java 中创建一个哈希映射。创建哈希映射时,必须定义构成有效值的内容(例如 IntegerString)。哈希映射保存值对。

package com.opensource.example;

import java.util.HashMap;

public class Mapping {
    public static void main(String[] args) {
        HashMap<String, String> myMap = new HashMap<>();
        myMap.put("foo", "hello");
        myMap.put("bar", "world");

        System.out.println(myMap.get("foo") + " " + myMap.get("bar"));
        System.out.println(myMap.get("hello") + " " + myMap.get("world"));
    }
}

put 方法允许你向哈希映射添加数据,get 方法从哈希映射检索数据。

运行代码以查看输出。 假设你已将代码保存在名为 main.java 的文件中,则可以使用 java 命令直接运行它

$ java ./main.java
hello world
null null

调用哈希映射中的第二个值会返回 null,因此第一个值本质上是一个键,第二个值是一个值。 这在某些语言中被称为字典或关联数组。

只要你在创建哈希映射时告诉 Java 期望什么,你就可以混合和匹配放入哈希映射的数据类型

package com.opensource.example;

import java.util.HashMap;

public class Mapping {
    public static void main(String[] args) {
        HashMap<Integer, String> myMap = new HashMap<>();
        myMap.put(71, "zombie");
        myMap.put(2066, "apocalypse");

        System.out.println(myMap.get(71) + " " + myMap.get(2066));
    }
}

运行代码

$ java ./main.java
zombie apocalypse

使用 forEach 迭代哈希映射

有很多方法可以检索哈希映射中的所有数据对,但最直接的方法是 forEach 循环

package com.opensource.example;

import java.util.HashMap;

public class Mapping {

    public static void main(String[] args) {
        HashMap<String, String> myMap = new HashMap<>();
        myMap.put("foo", "hello");
        myMap.put("bar", "world");

        // retrieval
        myMap.forEach( (key, value) ->
                System.out.println(key + ": " + value));
    }
}

运行代码

$ java ./main.java
bar: world
foo: hello

结构化数据

有时使用 Java 哈希映射是有意义的,这样你就不必跟踪数十个单独的变量。一旦你了解如何在一种语言中构造和检索数据,你就可以以一种有组织和方便的方式生成复杂的数据。哈希映射不是你在 Java 中唯一需要的数据结构,但它是相关数据的一个很好的选择。

标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。 他曾在电影和计算行业工作,而且通常是同时进行。

评论已关闭。

知识共享许可协议本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.