Java HashMap replace()方法将指定键的映射替换为哈希映射中指定的新值
replace()方法的语法为:
hashmap.replace(K key, V oldValue, V newValue)
key - 要替换其映射的键
oldValue (可选)- 映射中要替换的值
newValue - oldValue被替换为这个值
HashMap replace()方法替换映射并返回:
如果可选参数oldValue不存在,则为与指定键关联的上一个值 
如果存在可选参数oldValue,则为true
注意: 如果指定的键映射到null值,或者该键不在hashmap中,则该方法返回null。 
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的哈希映射。在这里,我们已使用replace()方法将键1(1=English)的条目替换为指定的值Java。
在此,replace()方法没有可选oldValue参数。因此,它返回旧值(English)。
import java.util.HashMap;
class Main {
  public static void main(String[] args) {
    //创建 HashMap
    HashMap<String, String> countries = new HashMap<>();
    //将项目插入HashMap
    countries.put("Washington", "America");
    countries.put("Ottawa", "Canada");
    countries.put("Canberra", "Australia");
    System.out.println("Countries:\n" + countries);
    // 替换映射 {Washington = America}
    countries.replace("Washington", "America", "USA");  // 返回 true
    countries.replace("Canberra", "New Zealand", "Victoria");  // 返回 false
    System.out.println("执行 replace()之后的 Countries:\n" + countries);
  }
}输出结果
Countries:
{Canberra=Australia, Ottawa=Canada, Washington=America}
执行 replace()之后的 Countries:
{Canberra=Australia, Ottawa=Canada, Washington=USA}在上面的示例中,我们创建了一个名为countries的哈希映射 。注意这一行,
countries.replace("Washington", "America", "USA");在此,replace() 方法包括可选oldValue参数(America)。因此,将键Washington映射到值America的映射替换为新的值USA。
但是请注意,
countries.replace("Canberra", "New Zealand", "Victoria");在此,在哈希映射中,键Canberra未映射到值New Zealand。因此,replace()方法不会替换任何值。
注意:我们可以使用 Java HashMap clear() 方法从哈希映射中删除所有映射。
在HashMap中,put()和replace()方法的语法看起来非常相似。
// put() 语法 hashmap.put(key, value) // replace() 语法 hashmap.replace(key, value)
并且,当哈希映射包含指定键的映射时,则这两种方法都会替换与指定键关联的值。
但是,如果哈希映射不包含指定键的任何映射,则
put()方法为指定的键和值插入新的映射
replace()方法返回null
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<>();
    //将所有条目从language1放入language2
    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("HashMap after replace():\n" + languages1);
  }
}输出结果
HashMap: {1=Python, 2=JavaScript}
put()之后的HashMap:
{1=Python, 2=JavaScript, 3=Java}
HashMap 之后的HashMap():
{1=Python, 2=JavaScript}在上面的示例中,我们创建了两个名为languages1和languages2的哈希映射。我们使用了HashMap putAll()方法,以便两个哈希映射具有相同的映射。
在此,哈希映射中不存在键3的映射。 因此,
put()方法将新的映射(3 = Java)添加到HashMap
replace()方法不执行任何操作
访问Java HashMap put()方法以了解有关添加条目的更多信息。