Java 8 為 Map 介面新增了兩個 replace 方法,簡化了條件替換邏輯,並支援函數式編程風格。本文詳細對比 JDK 8 前後的寫法差異。
只有當鍵已存在時才替換值,否則返回 null。
if (map.containsKey(key)) {
return map.put(key, value);
} else {
return null;
}
final String replaced = map.replace("Alaska", "Juneau");
優勢:程式碼更簡潔,可搭配 final 變數接收舊值。
只有當鍵存在且舊值匹配時才替換,返回 boolean 表示是否成功。
if (map.containsKey(key) && Objects.equals(map.get(key), oldValue)) {
map.put(key, newValue);
return true;
}
return false;
final boolean replaced = map.replace("Nevada", "Las Vegas", "Carson City");
replace 不會插入新鍵值對,僅更新現有映射computeIfPresent 可實現更複雜的條件更新邏輯