關於Map中key和Value的靈活獲取(推薦給初學JAVA的受苦受難的兄弟姐妹們)


1、Map和Map.Entery區別

  筆者認為很多人誤解這兩個類,或者說不太會靈活應用,下面我來簡單說一下我的理解(僅供參考)。

    →Map : 無可厚非,學過java的不管是小鳥還是老牛都已經敲得不想再敲了,是屬於一個鍵值對的集合類,屬於線程不安全的,關於Map線程安全的可以另外實現,以后會講到。

    For Example: Map<String,Object> map = new HashMap<String,Object>();

      map.put("1",1);//分區1

      map.put("2",2);//分區1

    key和value只是我們自己定義的對象,並且key是唯一不重復的,value可以重復,僅此而已。

  

    →Map.Entry是一個Map的衍生類,功能更強大,可以通過 map.enteySet()獲取,是一個實例化或后對象集,

    For Example: Map.Entery<String,Object> map = map.entrySet();

      map.put("1",1);//分區1

      map.put("2",2);//分區2

      是以一個Set容器承載的,可以迭代遍歷,並且提供了getKey()和getValue(),setValue()等常用的方法;

  ★ example 1    

  public class TestMap {

     public static void main(String[] args) {  

       Map<String, Object> map = new HashMap<String,Object>();   

       map.put("1", "One");   

       map.put("2", "Two");   

       map.put("3", "Three");  

       map.put("4", "Four");  

         map.put("5", "Five");   

      System.out.println(TestMap.mapConvertStringOne(map));

    }    

    public static String mapConvertStringOne(Map<String,Object> mapEmp){   

      StringBuilder returnString = new StringBuilder();   

      Set<Map.Entry<String, Object>> set =  mapEmp.entrySet();   

      Map.Entry<String, Object> entry = null;   

      returnString.append("{");   

      for(Iterator<Map.Entry<String, Object>> iterator2  = set.iterator();iterator2.hasNext();){      

        entry = iterator2.next();    

        returnString.append(entry.getKey());    

        returnString.append(":");    

        returnString.append(entry.getValue());    

        if(iterator2.hasNext()){          

           returnString.append(",");   

         }   

      }  

       returnString.append("}");   

       return returnString.toString();  

    }

  }

  運行結果: {3:Three,2:Two,1:One,5:Five,4:Four}// 可以看出無序排列

  ★ example 2

  @SuppressWarnings("rawtypes")
   private static String mapConvertStringTwo(Map<String,Object> mapEmp){
      StringBuilder returnString = new StringBuilder();
      Set<String> keySet =  mapEmp.keySet();
      returnString.append("{");
      for (Iterator iterator = keySet.iterator(); iterator.hasNext();) {
         String key = (String) iterator.next();
         returnString.append(key);
         returnString.append(":");
         returnString.append(mapEmp.get(key));
         if(iterator.hasNext()){
    
            returnString.append(",");
         }
      }
      returnString.append("}");
      return returnString.toString();
 }
 運行結果 :  {3:Three,2:Two,1:One,5:Five,4:Four}// 可以看出無序排列

本人認為如果沒有什么特殊處理 第二個例子更實用一些,簡單易懂都是大家平時用的,另外關於性能方面HashMap性能相對HashTable更好,在開發上基本都是實用HashMap.以上介紹的小例子希望可以幫助大家。

  

 

 

 

 

 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM