首页 > 代码库 > 关于Map中key和Value的灵活获取(推荐给初学JAVA的受苦受难的兄弟姐妹们)

关于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.以上介绍的小例子希望可以帮助大家。

  

 

 

 

 

 

    

 

关于Map中key和Value的灵活获取(推荐给初学JAVA的受苦受难的兄弟姐妹们)