Java HashMap replace()

replace() 方法的语法是

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

这里,hashmapHashMap 类的一个 对象


replace() 参数

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

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

replace() 返回值

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

  • 与指定键关联的旧值,如果可选参数 oldValue 不存在
  • true,如果存在可选参数 oldValue

注意:如果指定的 key 映射到 null value 或 key 不在 hashmap 中,则该方法返回 null


示例 1:替换 HashMap 中的条目

import java.util.HashMap;

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

    // create an HashMap
    HashMap<Integer, String> languages = new HashMap<>();

    // add entries to HashMap
    languages.put(1, "Python");
    languages.put(2, "English");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // replace mapping for key 2
    String value = languages.replace(2, "Java");

    System.out.println("Replaced Value: " + value);
    System.out.println("Updated HashMap: " + languages);
  }
}

输出

HashMap: {1=Python, 2=English, 3=JavaScript}
Replaced Value: English
Updated 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) {
    // create an HashMap
    HashMap<String, String> countries = new HashMap<>();

    // insert items to the HashMap
    countries.put("Washington", "America");
    countries.put("Ottawa", "Canada");
    countries.put("Canberra", "Australia");
    System.out.println("Countries:\n" + countries);

    // replace mapping {Washington = America}
    countries.replace("Washington", "America", "USA");  // return true

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

    System.out.println("Countries after replace():\n" + countries);
  }
}

输出

Countries:
{Canberra=Australia, Ottawa=Canada, Washington=America}
Countries after replace():
{Canberra=Australia, Ottawa=Canada, Washington=USA}

在上面的示例中,我们创建了一个名为 countries 的 hashmap。请注意这行代码:

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() 的区别

HashMap 中,put()replace() 方法的语法看起来非常相似。

// syntax of put()
hashmap.put(key, value)

// syntax of replace()
hashmap.replace(key, value)

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

但是,如果 hashmap 不包含指定 key 的任何映射,那么

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

示例 3:HashMap put() 与 replace() 的区别

import java.util.HashMap;

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

    // create an HashMap
    HashMap<Integer, String> languages1 = new HashMap<>();

    // insert entries to HashMap
    languages1.put(1, "Python");
    languages1.put(2, "JavaScript");

    // create another HashMap similar to languages1
    HashMap<Integer, String> languages2 = new HashMap<>();

    // puts all entries from languages1 to languages2
    languages2.putAll(languages1);
    System.out.println("HashMap: " + languages1);

    // use of put()
    languages2.put(3, "Java");
    System.out.println("HashMap after put():\n" + languages2);

    // use of replace()
    languages1.replace(3, "Java");
    System.out.println("HashMap after replace():\n" + languages1);

  }
}

输出

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

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

这里,键 3 的映射不存在于 hashmap 中。因此:

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

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


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战