如何直接获得map的所有value

如题所述

你是否已经对每次从Map中取得关键字然后再取得相应的值感觉厌倦?使用Map.Entry类,你可以得到在同一时间得到所有的信息。标准的Map访问方法如下:Setkeys=map.keySet();if(keys!=null){Iteratoriterator=keys.iterator();while(iterator.hasNext()){Objectkey=iterator.next();Objectvalue=map.get(key);;…;}}然后,这个方法有一个问题。从Map中取得关键字之后,我们必须每次重复返回到Map中取得相对的值,这是很繁琐和费时的。幸运的是,这里有一个更加简单的途径。Map类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集。接着,Map.Entry类提供了一个getKey()方法和一个getValue()方法,因此,上面的代码可以被组织得更符合逻辑。举例如下:Setentries=map.entrySet();if(entries!=null){Iteratoriterator=entries.iterator();while(iterator.hasNext()){Map.Entryentry=iterator.next();Objectkey=entry.getKey();Objectvalue=entry.getValue();;…}}尽管增加了一行代码,我们却省略了许多对Map不必要的"get"调用。同时,提供给开发人员一个同时保持了关键字和其对应的值的类。Map.Entry同时也提供了一个setValue()方法,程序员可以使用它修改map里面的值。Hashtable内部排列的方式是散列排布,所以当输出信息时会是无序的。为了能保证输出的数据按照顺序排列,不要渴望用java自带的函数来对Hashtable对象进行调整处理。当我们获取Hashtable里的KEY和VALUE时,一般都运行了Map.Entry类来转换,好,现在就用这个类来作文章,我具体写了一个方法。代码:/***方法名称:getSortedHashtable*参数:Hashtableh引入被处理的散列表*描述:将引入的hashtable.entrySet进行排序,并返回*/publicstaticMap.Entry[]getSortedHashtable(Hashtableh){Setset=h.entrySet();Map.Entry[]entries=(Map.Entry[])set.toArray(newMap.Entry[set.size()]);Arrays.sort(entries,newComparator(){publicintcompare(Objectarg0,Objectarg1){Objectkey1=((Map.Entry)arg0)。getKey();Objectkey2=((Map.Entry)arg1)。getKey();return((Comparable)key1)。compareTo(key2);}});returnentries;}调用这个方法:Map.Entry[]set=getSortedHashtable(t);//perportyTablefor(inti=0;i
温馨提示:答案为网友推荐,仅供参考
相似回答