Velocity遍历map与遍历list的比较

问题:
向页面传递key与value的组合

1.

1.1 思路,key与value,想到用map
private Map<String,String>  lineBusiness = new HashMap<String,String>() ;
lineBusiness.put("abc","bcd");
lineBusiness.put("dbc","bcd");
lineBusiness.put("gbc","bcd");

velocity中遍历map
#foreach($param in ${lineBusiness.entrySet()}) 
 ${param.key}  ${param.value}
#end


但 key不是按照添加顺序显示的
原因:map的key是hash值,是随机的,不是按照顺序输出的

业务要求,要按照添加顺序显示

1.2

如果要求按顺序输出可以采用
Map<K,V> map = new LinkedHashMap() ;
#foreach($infos in $lineBusiness.entrySet())
${infos.key}  ${infos.value}
#end

按添加顺序显示

1.3
遍历map中的key
#foreach($infos in $lineBusiness.keySet())
${infos}
#end

遍历map中的value
#foreach($infos in $lineBusiness.values())
${infos}
#end

1.4
java中map里面的key是否可以按我们插入进去的顺序输出?
综上,取决于实现map的方式,若为LinkedHashMap,则可以

2.组装key与value为po类

2.1 在已有类的内部定义,即内部类
List<po> list = new ArrayList<po>();
po.setKey("");
po.setValue("");
list.add(po);

velocity中遍历list
#foreach($info in $list)
    $!info.value  $info.key
#end 

确认list已经赋值,但页面没有显示,原因 po 必须 是public 的访问权限,
且 对该 成员变量添加 set get 方法,才可传值到VM中

而 一个类中 只能有一个类是 public的,其余的类都不可以是 public,
即 定义内部类,是不能传值的

2.2 在同包或其他包中定义po类,引用该po类进行实现

效果:正确

这种方式也可以实现,但若属性不是很多的时候,不建议这样做,浪费时间且代码不好维护

你可能感兴趣的:(list,map,velocity,工作中遇到的问题总结)