Skip to content

Java HashMap

Java集合框架的HashMap类提供了哈希表数据结构的功能。它以键/值对的形式存储元素。这里,是用于在映射中关联每个的唯一标识符。

HashMap类实现了Map接口。

Java HashMap implements Map interface Java HashMap 实现


创建一个HashMap

要创建一个哈希映射,我们首先必须导入java.util.HashMap包。一旦导入了该包,我们就可以在Java中创建哈希映射。

// 带有8个容量和0.6负载因子的哈希映射
HashMap<K, V> numbers = new HashMap<>();

在上面的代码中,我们创建了一个名为numbers的哈希映射。这里,K代表键的类型,V代表值的类型。例如,

HashMap<String, Integer> numbers = new HashMap<>();

在这里,的类型是String的类型是Integer


示例1:在Java中创建HashMap

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    // 创建一个哈希映射
    HashMap<String, Integer> languages = new HashMap<>();

    // 向哈希映射中添加元素
    languages.put("Java", 8);
    languages.put("JavaScript", 1);
    languages.put("Python", 3);
    System.out.println("HashMap: " + languages);
  }
}

输出

HashMap: {Java=8, JavaScript=1, Python=3}

在上面的示例中,我们创建了一个名为languages的HashMap

在这里,我们使用了put()方法将元素添加到该哈希映射中。我们将在本教程的后面部分更详细地学习put()方法。


Java HashMap的基本操作

HashMap类提供了各种方法来执行哈希映射的不同操作。在本教程中,我们将介绍一些常用的数组列表操作:

  • 添加元素
  • 访问元素
  • 更改元素
  • 删除元素

1. 向HashMap添加元素

要向哈希映射中添加单个元素,我们使用HashMap类的put()方法。例如,

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    // 创建一个哈希映射
    HashMap<String, Integer> numbers = new HashMap<>();

    System.out.println("初始 HashMap: " + numbers);
    // 使用 put() 方法添加元素
    numbers.put("One", 1);
    numbers.put("Two", 2);
    numbers.put("Three", 3);
    System.out.println("put() 方法之后的 HashMap: " + numbers);
  }
}

输出

初始 HashMap: {}
put() 方法之后的 HashMap: {One=1, Two=2, Three=3}

在上面的示例中,我们创建了一个名为numbers的HashMap。在这里,我们使用了put()方法将元素添加到numbers中。

注意以下语句,

numbers.put("One", 1);

在这里,我们将String值One作为键传递,并将Integer值1作为值传递给put()方法。

推荐阅读


2. 访问HashMap元素

我们可以使用get()方法从哈希映射中访问值。例如,

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2```

创建HashMap from Other Maps

在Java中,我们还可以从其他map创建一个hashmap。例如,

java
import java.util.HashMap;
import java.util.TreeMap;

class Main {
  public static void main(String[] args) {

    // create a treemap
    TreeMap<String, Integer> evenNumbers = new TreeMap<>();
    evenNumbers.put("Two", 2);
    evenNumbers.put("Four", 4);
    System.out.println("TreeMap: " + evenNumbers);

    // create hashmap from the treemap
    HashMap<String, Integer> numbers = new HashMap<>(evenNumbers);
    numbers.put("Three", 3);
    System.out.println("HashMap: " + numbers);
  }
}

输出结果:

TreeMap: {Four=4, Two=2}
HashMap: {Two=2, Three=3, Four=4}

在上面的例子中,我们创建了一个名为evenNumbers的TreeMap。注意下面这行代码:

java
numbers = new HashMap<>(evenNumbers)

在这里,我们使用TreeMap创建了一个名为numbersHashMap。要了解更多关于treemap的内容,请访问Java TreeMap

注意:在创建hashmap时,我们可以包含可选参数:capacityload factor。例如,

java
HashMap<K, V> numbers = new HashMap<>(8, 0.6f);

这里,

  • 8(容量为8)- 这意味着它可以存储8个条目。
  • 0.6f(负载因子为0.6)- 这意味着当我们的哈希表填满60%时,条目将被移动到原始哈希表大小加倍的新哈希表中。

如果不使用可选参数,则默认容量16,默认负载因子0.75