跳到主要内容

Java HashMap replace() 方法

replace() 方法的语法是:

hashmap.replace(K key, V oldValue, V newValue)

这里,hashmapHashMap 类的一个对象。

replace() 方法的参数

replace() 方法可以接受 3 个参数。

  • key - 要替换映射的键
  • oldValue(可选)- 映射中要被替换的值
  • newValue - 用此值替换 oldValue

replace() 方法的返回值

HashMap 的 replace() 方法替换映射并返回:

  • 如果没有提供可选参数 oldValue,则返回与指定键之前关联的值
  • 如果提供了可选参数 oldValue,则返回 true

注意:如果指定的 key 映射到一个 null 值 或键在 hashmap 中不存在,则方法返回 null

示例 1:在 HashMap 中替换条目

import java.util.HashMap;

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

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

// 向 HashMap 添加条目
languages.put(1, "Python");
languages.put(2, "English");
languages.put(3, "JavaScript");
System.out.println("HashMap: " + languages);

// 替换键为 2 的映射
String value = languages.replace(2, "Java");

System.out.println("被替换的值: " + value);
System.out.println("更新后的 HashMap: " + languages);
}
}

输出

HashMap: {1=Python, 2=English, 3=JavaScript}
被替换的值: English
更新后的 HashMap: {1=Python, 2=Java, 3=JavaScript}

在上述示例中,我们创建了一个名为 languages 的 hashmap。这里,我们使用了 replace() 方法来替换键 1 (1=English) 的条目为指定的值 Java

这里,replace() 方法没有提供可选的 oldValue 参数。因此,它返回旧值(English)。

示例 2:带有旧值的 HashMap replace()

import java.util.HashMap;

class Main {
public static void main(String[] args) {
// 创建一个 HashMap
HashMap<String, String> countries = a new HashMap<>();

// 向 HashMap 插入条目
countries.put("Washington", "America");
countries.put("Ottawa", "Canada");
countries.put("Canberra", "Australia");
System.out.println("国家:\n" + countries);

// 替换映射 {Washington = America}
countries.replace("Washington", "America", "USA"); // 返回 true

countries.replace("Canberra", "New Zealand", "Victoria"); // 返回 false

System.out.println("替换后的国家:\n" + countries);
}
}

输出

国家:
{Canberra=Australia, Ottawa=Canada, Washington=America}
替换后的国家:
{Canberra=Australia, Ottawa=Canada, Washington=USA}
```在上述示例中,我们创建了一个名为 `countries` 的 hashmap。注意这行代码,

```java
countries.replace("Washington", "America", "USA");

这里,replace() 方法包含了可选的 oldValue 参数(America)。因此,键 Washington 映射到值 America 的映射被替换为新值 USA

然而,请注意这行代码,

countries.replace("Canberra", "New Zealand", "Victoria");

在这个 hashmap 中,键 Canberra 并未映射到值 New Zealand。因此,replace() 方法不会替换任何值。

注意:我们可以使用 Java HashMap clear() 方法移除 hashmap 中的所有映射。

HashMap put() 与 replace() 对比

HashMapput() 方法和 replace() 方法的语法看起来非常相似。

// put() 的语法
hashmap.put(key, value)

// replace() 的语法
hashmap.replace(key, value)

当 hashmap 中包含指定 的映射时,这两种方法都会替换与指定键关联的值。

然而,如果 hashmap 中没有指定 的任何映射,那么

  • put() 方法会为指定的 插入新的映射
  • replace() 方法会返回 null

示例 3:HashMap put() 与 replace() 对比

import java.util.HashMap;

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

// 创建一个 HashMap
HashMap<Integer, String> languages1 = new HashMap<>();

// 向 HashMap 插入条目
languages1.put(1, "Python");
languages1.put(2, "JavaScript");

// 创建另一个与 languages1 类似的 HashMap
HashMap<Integer, String> languages2 = new HashMap<>();

// 将 languages1 的所有条目放入 languages2
languages2.putAll(languages1);
System.out.println("HashMap: " + languages1);

// 使用 put()
languages2.put(3, "Java");
System.out.println("put() 后的 HashMap:\n" + languages2);

// 使用 replace()
languages1.replace(3, "Java");
System.out.println("replace() 后的 HashMap:\n" + languages1);

}
}

输出

HashMap: {1=Python, 2=JavaScript}
put() 后的 HashMap:
{1=Python, 2=JavaScript, 3=Java}
replace() 后的 HashMap:
{1=Python, 2=JavaScript}

在上述示例中,我们创建了两个名为 languages1languages2 的 hashmap。我们使用了 HashMap putAll() 方法,使两个 hashmap 具有相同的映射。

这里,键 3 在 hashmap 中不存在。因此,

  • put() 方法将新映射 (3 = Java) 添加到 HashMap
  • replace() 方法不执行任何操作

要了解更多关于添加条目的信息,请访问 Java HashMap put()