📜  Java HashMap replace()

📅  最后修改于: 2020-09-27 00:48:02             🧑  作者: Mango

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

注意 :如果将指定的键映射为null值或该键在哈希图中不存在,则该方法返回null


示例1:替换HashMap中的条目
import java.util.HashMap;

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

    // create an HashMap
    HashMap 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}

在上面的示例中,我们创建了一个名为language的哈希表。在这里,我们使用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 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}

在上面的例子中,我们创建了一个名为HashMap的国家 。注意这一行,

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

在这里, replace()方法包括可选的oldValue参数( America )。因此,关键的华盛顿映射到价值美国的映射被新的价值美国取代。

但是请注意,

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

在此,在哈希图中, 堪培拉键未映射为值New Zealand 。因此, replace()方法不会替换任何值。

注意 :我们可以使用Java HashMap clear()方法从哈希图中删除所有映射。


HashMap put()与更换()

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

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

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

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

但是,如果哈希图不包含指定键的任何映射,则

  • put()方法为指定的插入新的映射
  • replace()方法返回null
示例3:HashMap put()与。更换()
import java.util.HashMap;

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

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

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

    // create another HashMap similar to languages1
    HashMap 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}

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

在此,哈希映射中不存在键3的映射。因此,

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

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