zoukankan      html  css  js  c++  java
  • 如何取出 Map中key和value的值

    你是否已经对每次从Map中取得关键字然后再取得相应的值感觉厌倦?使用Map.Entry类,你可以得到在同一时间得到所有的信息。标准的Map访问方法如下:

    Set keys = map.keySet( );

     

    if(keys != null) {

     

    Iterator iterator = keys.iterator( );

     

    while(iterator.hasNext( )) {

     

    Object key = iterator.next( );

     

    Object value = map.get(key);

     

    ;....

     

    ;}

     

    }

     

    然后,这个方法有一个问题。从Map中取得关键字之后,我们必须每次重复返回到Map中取得相对的值,这是很繁琐和费时的。

     

    幸运的是,这里有一个更加简单的途径。Map类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集。 接着,Map.Entry类提供了一个getKey()方法和一个getValue()方法,因此,上面的代码可以被组织得更符合逻辑。举例如下:

     

     

     Set entries = map.entrySet( );

     

    if(entries != null) {

     

    Iterator iterator = entries.iterator( );

     

    while(iterator.hasNext( )) {

     

    Map.Entry entry =iterator.next( );

     

    Object key = entry.getKey( );

     

    Object value = entry.getValue();

     

     

    ;....

     

    }

     

    }

     

    尽管增加了一行代码,我们却省略了许多对Map不必要的“get”调用。同时,提供给开发人员一个同时保持了关键字和其对应的值的类。Map.Entry同时也提供了一个setValue()方法,程序员可以使用它修改map里面的值。

    Hashtable内部排列的方式是散列排布,所以当输出信息时会是无序的。为了能保证输出的数据按照顺序排列,不要渴望用java自带的函数来对 Hashtable对象进行调整处理。当我们获取Hashtable里的KEY和VALUE时,一般都运行了Map.Entry类来转换,好,现在就用这个类来作文章,我具体写了一个方法。

    代码:

    /**

    * 方法名称:getSortedHashtable

    * 参数:Hashtable h 引入被处理的散列表 

    * 描述:将引入的hashtable.entrySet进行排序,并返回

    */

    public static Map.Entry[] getSortedHashtable(Hashtable h){

       Set set = h.entrySet();

      

       Map.Entry[] entries = (Map.Entry[])set.toArray(new Map.Entry[set.size()]);

       

       Arrays.sort(entries,new Comparator(){

        public int compare(Object arg0, Object arg1) {

         Object key1 = ((Map.Entry)arg0).getKey();

         Object key2 = ((Map.Entry)arg1).getKey();

         return ((Comparable)key1).compareTo(key2);

        }

       

       });

      

       return entries;

    }

    调用这个方法:

    Map.Entry[] set = getSortedHashtable(t);

        

       //perportyTable

       for (int i=0;i<set.length;i++){

        System.out.println(set[i].getKey().toString());

       

         System.out.println(set[i].getValue().toString());

     

       }

     

  • 相关阅读:
    Rust started
    修改cargo镜像源
    如何激发团队潜能?
    JVM 09.5 运行时数据区 堆 堆时对象分配的唯一选择吗 逃逸分析
    JVM 09.5 运行时数据区 堆 相关参数设置总结
    JVM 09.4 运行时数据区 堆 线程独占区域 TLAB
    JVM 09.3 运行时数据区 堆 调优/垃圾回收/小结
    JVM 09.2 运行时数据区 堆 年轻带/老年代/对象分配过程
    JVM 09.1 运行时数据区 堆 核心概述
    JVM 08 运行时数据区 本地方法栈
  • 原文地址:https://www.cnblogs.com/zswbky/p/5432123.html
Copyright © 2011-2022 走看看