
<c:forEach var = 'item' items='${mapjh2}'>
${item}
</cforEach >
这样可以循环输出,但是指定输出 在页面是不可行的。只能在后台吧要输出的先选择好
angular中取map的方法如下:
1声明一个map: Map map = new HashMap();
2向map中放值,注意:map是key-value的形式存放的如:mapput(”sa”,”dd”);
3从map中取值:String str = mapget(”sa”)toString();结果是:str = ”dd”;
4遍历一个map,从中取得key 和valueMap map = new HashMap() ;Iterator it = mapentrySet()iterator() ;while (ithasNext()){MapEntry entry = (MapEntry) itnext() ;Object key = entrygetKey() ;Object value = entrygetValue() ;}
#在struts2里不是你这样用的,当你用request,session,application保存值后,在<s:property>里可以用才能用#跟request(看你用什么保存的)跟 保存的名字才能取到值,比如我下面的这个就可以取到值,不懂可以继续问~~ qq 290350144Map<Integer,String> map=new HashMap<Integer,String>();get set省略在strtuts2的execute()的方法里写 mapput(0,"aaa");
sessionput("map",map); 前台页面用<s:property value="#sessionmap[0]" />这样就能取到
获取map的key和value的方法分为以下两种形式:
1、mapkeySet():先获取map的key,然后根据key获取对应的value;
2、mapentrySet():同时查询map的key和value,只需要查询一次;
注意:当map的value值相等时,根据key值进行排序
很多人都推荐使用entrySet,认为其比keySet的效率高很多。理由是:entrySet方法一次拿到所有key和value的集合;而keySet拿到的只是key的集合,针对每个key,都要去Map中额外查找一次value,从而降低了总体效率。
两种方法对比测试如下:
HashMap测试数据:
TreeMap测试数据:
扩展资料:
mapkeySet()和mapEntrySet()的比较:
一、如果使用HashMap
1、同时遍历key和value时,keySet与entrySet方法的性能差异取决于key的具体情况,如复杂度(复杂对象)、离散度、冲突率等。换言之,取决于HashMap查找value的开销。
entrySet一次性取出所有key和value的 *** 作是有性能开销的,当这个损失小于HashMap查找value的开销时,entrySet的性能优势就会体现出来。
在比测试中,当key是最简单的数值字符串时,keySet可能反而会更高效,耗时比entrySet少10%。总体来说还是推荐使用entrySet。
因为当key很简单时,其性能或许会略低于keySet,但却是可控的;而随着key的复杂化,entrySet的优势将会明显体现出来。当然,我们可以根据实际情况进行选择
2、只遍历key时,keySet方法更为合适,因为entrySet将无用的value也给取出来了,浪费了性能和空间。在上述测试结果中,keySet比entrySet方法耗时少23%。
3、只遍历value时,使用vlaues方法是最佳选择,entrySet会略好于keySet方法。
二、如果使用TreeMap
1、同时遍历key和value时,与HashMap不同,entrySet的性能远远高于keySet。这是由TreeMap的查询效率决定的,也就是说,TreeMap查找value的开销较大,明显高于entrySet一次性取出所有key和value的开销。因此,遍历TreeMap时强烈推荐使用entrySet方法。
2、只遍历key时,keySet方法更为合适,因为entrySet将无用的value也给取出来了,浪费了性能和空间。在上述测试结果中,keySet比entrySet方法耗时少24%。
3、只遍历value时,使用vlaues方法是最佳选择,entrySet也明显优于keySet方法。
参考资料:
百度百科——Map
一般的做法是将map对象转成json在jsp页面中输出,js直接得到的就是json对象,便利json使用for循环即可
for(k in json){
alert(k + "=" + json[k])
}
你要明白el表达式是在什么时候执行的
el表达式实际上是java代码, 即jsp里的java代码, 是servlet执行的
也就是说, 后台看到el表达式的时候就执行了, 然后用执行的结果代替这个el表达式, 然后再返回给前台
你写alert("${endtimeMap['8']}");
后台看到的是就是${endtimeMap['8']}这个东西, 然后计算从map里得到对应的值, 代替则个东西, 所以你到前台看到的实际上是map里的值了
如果你写alert("${endtimeMap['"+ff+"']}");, 后台看到的是${endtimeMap['"+ff+"']}, 你觉得后台能把这个解析成什么, 后台会认为你是取map里key值为"\"+ff+\""的value(你要是不信, 你给你的map里添一组这个key-value)
归根结底还是执行顺序的问题, el表达式是servlet是后台执行的, js是得到response后在前台执行的, el优先于js, 你的想法是js先把值穿进去, 然后el表达式再得值, 所以必须不正确了
这样说你应该明白了吧
举个例子:
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表达式获取map的值全部的内容,包括:如何用EL表达式获取map的值、angular中怎么取map、在页面中怎么用struts2来获取HashMap第0值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)