如何取出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());

}

你的配置文件是要你来写的么?具体格式是形如:

student 2001;2002;2003

teacher 1001;1002;1003

这样的?

如果是以上格式的,可以通过读取配置文件,然后以数组形式处理,结果数组为key=>value的形式。

下面的代码使用于配置文件每行key的结束以teacher 1001;1002;1003没有分号结束的,如果有分号就表示这个key还没结束。

//读取文件就省了

$config='

student 2001;2002;2003;

2004;

teacher 1001;1002;1003

';

$temp=array();

$newarr=array();

$arr=explode("\n",$config);

$count=count($arr);

for($i=0;$i<$count;$i++){

if(strlen($arr[$i])!=1){ //跳过长度小于等于1的行

if(strstr($arr[$i],' ')&&preg_match('/;|;$/i',$arr[$i])){ //以;结尾表示这个key有两行

$newstr=str_replace("\n","",$arr[$i]$arr[$i+1]); //将下一行的字符串连接到这一行同时去除换行(不知道为啥打印结果的时候还是有换行~)

$i++; //跳过下一行没有key的

}else{

$newstr=$arr[$i];

}

$temp=explode(' ',$newstr);

if(is_array($temp)){

$newarr[$temp['0']]=$temp['1'];

}

}

}

print_r($newarr); //newarr格式为key=>value

redis可以多key对应一个value,设置方法为:

1、打开HBuilderX工具,新建web项目并在js文件夹中,创建一个js文件mapjs。

2、进入到mapjs,定义一个map变量(Map类型),然后调用set方法设置key-value。

3、调用forof语句,遍历map变量的值,使用entries()方法,打印对应的key和value。

4、接着新建一个HTML5页面,并将mapjs引入到页面中。

5、修改mapjs,调用windowonload,并定义showKeys方法。

以上就是关于如何取出Map中key和value的值全部的内容,包括:如何取出Map中key和value的值、写程序实现读取配置文件,程序调用实现接口,并返回指定key的value值、redis可以多key对应一个value吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/10145178.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存