如何将Map集合的键和值分别取出来

如何将Map集合的键和值分别取出来,第1张

import javautil; import javautilMapEntry; public class HashMapTest2 { public static void main(String[] args) { Map map = new HashMap(); mapput(1, "cabb"); mapput(2, "lucy"); mapput("tom",3); mapput(4, "jerry"); mapput("lily",5); / 如何将Map集合的键和值分别取出来? / //1使用keySet: // 将map中的key存入set集合,通过迭代器取出所有的key,再获取每一个键对应的值 Set keySet = mapkeySet(); // key的set集合 Iterator it = keySetiterator(); while(ithasNext()){ Object k = itnext(); // key Object v = mapget(k); //value Systemoutprintln("K:" + k + " V:" + v); } Systemoutprintln("----------------------------------"); //2使用entrySet: // 将map中的key-value关系存入到set集合中,再使用MapEntry Set entrySet = mapentrySet(); // key-value的set集合 Iterator it2 = entrySetiterator(); while(it2hasNext()){ MapEntry me = (Entry) it2next(); Object k = megetKey(); Object v = megetValue(); Systemoutprintln("K:" + k + " V:" + v); } } }

标准的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());

}

举个例子:

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

先拿所有的键:

Integer[] keys = mapkeySet()toArray(new Integer[0]);

然後随机一个键,找出该值:

Random random = new Random();

Integer randomKey = keys[randomnextInt(keyslength)];

String randomValue = mapget(randomKey);

//第一种:普遍使用,二次取值

Systemoutprintln("通过MapkeySet遍历key和value:");

for (String key : mapkeySet()) {

Systemoutprintln("key= "+ key + " and value= " + mapget(key));

}

//第二种

Systemoutprintln("通过MapentrySet使用iterator遍历key和value:");

Iterator<MapEntry<String, String>> it = mapentrySet()iterator();

while (ithasNext()) {

MapEntry<String, String> entry = itnext();

Systemoutprintln("key= " + entrygetKey() + " and value= " + entrygetValue());

}

在EL中,方括号运算符用来检索数组和集合的元素。对于实现 javautilMap 接口的集合,方括号运算符使用关联的键查找存储在映射中的值。\x0d\\x0d\在方括号中指定键,并将相应的值作为表达式的值返回。例如,表达式 ${map['key']} 返回与 map标识符所引用的 Map 中的 "key" 键相关联的值。 \x0d\当forEach 的items属性中的表达式的值是javautilMap时,则var中命名的变量的类型就是 javautilMapEntry。这时var=entry的话,用表达式${entrykey}取得键名。用表达${entryvalue}得到每个entry的值。这是因为javautilMapEntry对象有getKey和getValue方法,表达式语言遵守JavaBean的命名约定。 \x0d\ map2 = new HashMap(); \x0d\map2put("a","hello world"); \x0d\map2put("b","this is map"); \x0d\requestsetAttribute("map2",map2); \x0d\%> \x0d\

\x0d\键值对遍历

\x0d\ \x0d\${itemkey} > ${itemvalue}

\x0d\ \x0d\键遍历

\x0d\ \x0d\${itemkey}

\x0d\ \x0d\值遍历

\x0d\ \x0d\${itemvalue}

\x0d\ \x0d\ \x0d\

\x0d\ list = new ArrayList(); \x0d\listadd("first"); \x0d\listadd("second"); \x0d\List list2 = new ArrayList(); \x0d\list2add("aaaaaa"); \x0d\list2add("bbbbbb"); \x0d\Map> map = new HashMap(); \x0d\mapput("a",list); \x0d\mapput("b",list2); \x0d\requestsetAttribute("map",map); \x0d\%> \x0d\通过键获得列表值,并遍历列表

\x0d\ \x0d\${item }

\x0d\

\x0d\ \x0d\${item }

\x0d\

\x0d\map中值为列表,直接遍历列表中的每一项

\x0d\ \x0d\ \x0d\${it }

\x0d\ \x0d\

以上就是关于如何将Map集合的键和值分别取出来全部的内容,包括:如何将Map集合的键和值分别取出来、如何获取map的key和value、JAVA,如何随机取出Map中一对键和值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/9405107.html

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

发表评论

登录后才能评论

评论列表(0条)

保存