JDK8——Map操作

       本文涵蓋的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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章