如何取出 Map中key和value的值

如何取出 Map中key和value的值,第1张

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

Set keys = mapkeySet( );

if(keys != null) {

Iterator iterator = keysiterator( );

while(iteratorhasNext( )) {

Object key = iteratornext( );

Object value = mapget(key);

;

;}

}

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

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

Set entries = mapentrySet( );

if(entries != null) {

Iterator iterator = entriesiterator( );

while(iteratorhasNext( )) {

MapEntry entry =iteratornext( );

Object key = entrygetKey( );

Object value = entrygetValue();

;

}

}

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

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

代码:

/

方法名称:getSortedHashtable

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

描述:将引入的hashtableentrySet进行排序,并返回

/

public static MapEntry[] getSortedHashtable(Hashtable h){

Set set = hentrySet();

MapEntry[] entries = (MapEntry[])settoArray(new MapEntry[setsize()]);

Arrayssort(entries,new Comparator(){

public int compare(Object arg0, Object arg1) {

Object key1 = ((MapEntry)arg0)getKey();

Object key2 = ((MapEntry)arg1)getKey();

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

}

});

return entries;

}

调用这个方法:

MapEntry[] set = getSortedHashtable(t);

//perportyTable

for (int i=0;i<setlength;i++){

Systemoutprintln(set[i]getKey()toString());

Systemoutprintln(set[i]getValue()toString());

}

package test;import javautil;/ 取得Map中的key的集合用的方法是keySet,返回的是Set,

取得Map中的value的集合用的方法是values,返回的是Collect。

值得一提的是,本题中是HashMap,如果改为TreeMap,keySet()方法返回的便会按着字母顺序排列,原因很简单,因为在TreeMap中即时按着这个顺序排列的。/public class Test_Map {

public static void main(String[] args) throws Exception {

Map map = new HashMap();

mapput("one", 1);mapput("two", 2);

mapput("three", 3);

//得到value的方法

Systemoutprintln("========得到value的方法========");

Collection c = mapvalues();

Systemoutprintln(c);

Iterator iter1 = (Iterator)mapvalues()iterator();

while(iter1hasNext()){

Systemoutprintln(iter1next());}//得到key的方法

Systemoutprintln("========得到key的方法========");

Collection s = mapkeySet();

Systemoutprintln(s);

Iterator iter2 = (Iterator)mapkeySet()iterator();

java中规定map集合中key值必须唯一,value值可以重复,所以通过value来找key可能会出现一个value对应多个key的情况,API中也没有通过value寻找key的方法,所以只能通过自己的方法来获得key值

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

        mapput(1, "一");

        mapput(2, "二");

        mapput(3, "三");

        mapput(4, "二");

        String k="二";

        Set<Integer> set=mapkeySet();

        for(Integer str:set){

            if(kequals(mapget(str))){

                 Systemoutprintln(str);

            }

        }

以上就是关于如何取出 Map中key和value的值全部的内容,包括:如何取出 Map中key和value的值、根据map的key值获取value值 有多个key怎么获取多个value值、java用map通过value能找到key吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10155642.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存