replace()
方法的语法是:
hashmap.replace(K key, V oldValue, V newValue)
这里,
hashmap 是
HashMap
类的对象。
replace() 参数
replace()
方法可以带 3 个参数。
replace() 返回值
HashMap
与指定键关联的前一个值,如果可选参数 oldValue 不存在
replace()
方法替换映射并返回:
true
,如果可选参数 oldValue 存在
注意: 如果指定的键被映射为空值,或者该键不存在于哈希图中,则该方法返回空值。
示例 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 的哈希图。注意这一行,
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() 对比。替换()
put()
和
replace()
方法的语法在
HashMap
中看起来非常相似。
// syntax of put() hashmap.put(key, value) // syntax of replace() hashmap.replace(key, value)
并且,当 hashmap 包含指定键的映射时,两种方法都会替换与指定键关联的值。
但是,如果 hashmap 不包含指定键的任何映射,则
put()
方法为指定的键和值插入新的映射
replace()
方法返回 null
示例 3: HashMap put() 对比。替换()
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}
在上面的示例中,我们创建了两个名为
languages1 和
languages2 的哈希映射。我们使用了 HashMap putAll() 方法,以便两个哈希图具有相同的映射。
此处,键 3 的映射不存在于哈希图中。因此,
put()
方法将新映射 (3 = Java) 添加到 HashMap
replace()
方法不执行任何操作
要了解有关添加条目的更多信息,请访问 Java HashMap put()。