
你是否已经对每次从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吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)