本文涵蓋的JDK8中引進的Map方法有:getOrDefault(Object,V),putIfAbsent(K,V),remove(Object,Object),replace(K,V),和 replace(K,V,V)。
import java.util.HashMap;
import java.util.Map;
public class Jdk8Map {
private final static Map<String, String> statesAndCapitals;
static {
statesAndCapitals = new HashMap<>();
statesAndCapitals.put("Alaska", "Anchorage");
statesAndCapitals.put("California", "Sacramento");
statesAndCapitals.put("Colorado", "Denver");
statesAndCapitals.put("Florida", "Tallahassee");
statesAndCapitals.put("Nevada", "Las Vegas");
statesAndCapitals.put("New Mexico", "Sante Fe");
statesAndCapitals.put("Utah", "Salt Lake City");
statesAndCapitals.put("Wyoming", "Cheyenne");
}
public static void main(String[] args) {
/**
* getOrDefault(Object,V)
* 允許調用者在代碼語句中規定獲得在map中符合提供的鍵的值,否則在沒有找到提供的鍵的匹配項的時候返回一個“默認值”。
* 它不僅僅在“鍵”沒找到的時候返回提供的默認值,而且還會將鍵和默認值增加到調用的map中。
*/
String capitalNevada = statesAndCapitals.getOrDefault(
"Nevada", "Unknown");
System.out.println(capitalNevada);
String capitalWisconsin = statesAndCapitals.getOrDefault(
"Wisconsin", "Unknown");
System.out.println(capitalWisconsin);
/**
* putIfAbsent(v,v)
* 當map中不存在指定的鍵時,把<key,value>添加到map中
*/
String capitalWyoming =
statesAndCapitals.putIfAbsent("Wyoming", "Albany");
String capitalNewYork =
statesAndCapitals.putIfAbsent("New York", "Albany");
System.out.println(statesAndCapitals);
/**
* remove(Object,Object)超越了長期有效的Map.remove(Object)
* 方法,只有在提供的鍵和值都匹配的時候纔會刪除該map項
*/
boolean removedCalifornia =
statesAndCapitals.remove("California", "Sacramento");
boolean removedUtah = statesAndCapitals.remove("Utah", "Sacramento");
System.out.println(removedCalifornia);
System.out.println(removedUtah);
/**
* replace(K,V)
* 有在指定的鍵已經存在並且有與之相關的映射值時纔會將指定的鍵映射到指定的值(新值)
*/
String replacedAlaska = statesAndCapitals.replace("Alaska",
"Anchorage");
System.out.println(replacedAlaska);
/**
* replace(K,V,V)
* 當那個方法(上一個replace方法)只是涵蓋指定的鍵在映射中有任意一個有效的值的替換處理,而這個“replace”方法
* 接受一個額外的(第三個)參數,只有在指定的鍵和值都匹配的情況下才會替換。
*/
Boolean replacedNevada = statesAndCapitals.replace("Nevada", "Juneau",
"USA");
System.out.println(replacedNevada);
replacedNevada = statesAndCapitals.replace("Nevada", "Las Vegas",
"USA");
System.out.println(replacedNevada);
}
}
運行結果:
Las Vegas
Unknown
{New York=Albany, New Mexico=Sante Fe, Wyoming=Cheyenne, Colorado=Denver, Alaska=Anchorage, California=Sacramento, Florida=Tallahassee, Utah=Salt Lake City, Nevada=Las Vegas}
true
false
Anchorage
false
true