Java HashMap replace() 方法
replace()
方法的语法是:
hashmap.replace(K key, V oldValue, V newValue)
这里,hashmap
是 HashMap
类的一个对象。
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() 对比
HashMap
中 put()
方法和 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}
在上述示例中,我们创建了两个名为 languages1
和 languages2
的 hashmap。我们使用了 HashMap putAll() 方法,使两个 hashmap 具有相同的映射。
这里,键 3 在 hashmap 中不存在。因此,
put()
方法将新映射 (3 = Java) 添加到HashMap
replace()
方法不执行任何操作
要了解更多关于添加条目的信息,请访问 Java HashMap put()。