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中一对键和值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)