当前位置: 代码迷 >> Java Web开发 >> s:iterator遍历list<地图<string,string>>的有关问题
  详细解决方案

s:iterator遍历list<地图<string,string>>的有关问题

热度:954   发布时间:2016-04-16 22:22:00.0
s:iterator遍历list<map<string,string>>的问题
我action里赋值

Map<String,String> r0=new HashMap<String,String>();
     r0.put("DrugBankID1", "DrugBankID1");
     r0.put("DrugBankID2", "DrugBankID2");
     r0.put("相同靶标", "相同靶标");
     r0.put("靶标在PPI网络距离", "靶标在PPI网络距离");
     r0.put("靶标相同邻居节点", "靶标相同邻居节点");
     r0.put("靶标邻居节点距离", "靶标邻居节点距离");
     r0.put("相同靶标比例", "相同靶标比例");
     r0.put("靶标GO相似度", "靶标GO相似度");
     r0.put("化合物结构相似度", "化合物结构相似度");
     r0.put("ATC编码相似度", "ATC编码相似度");
     r0.put("靶标通路相似度", "靶标通路相似度");
     r0.put("靶标相同邻居节点比例", "靶标相同邻居节点比例");
     r0.put("协同概率", "协同概率");
     r0.put("拮抗概率", "拮抗概率");
     r0.put("药物交互类型", "药物交互类型");
List<Map<String,String>>resultHeader = new ArrayList<Map<String,String>>();

jsp界面打印

<s:iterator value="resultHeader" id="rh" status="status">
<td height="50px">ID</td>
<s:iterator value="resultHeader[#status.index]" >
<td height="50px"><s:property value="value"/></td>
</s:iterator>`
</s:iterator>

但是结果的顺序变了。。如图
难道s:iterator遍历的时候不是按照我map添加的顺序而输出的么?怎么控制它按照我添加的顺序一个一个输出,比如第一个DrugBankID1 第二个DrugBankID2 第三个 相同靶标
------解决方案--------------------
Map是无序的...想实现排序效果可以参考下面的例子
Map<String, Integer> map = new TreeMap<String, Integer>();   
map.put("j2se", 20);   
map.put("j2ee", 10);   
map.put("j2me", 30);   
List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(   
map.entrySet());   
//排序前    
for (int i = 0; i < infoIds.size(); i++) {   
String id = infoIds.get(i).toString();   
System.out.println(id);   
}   
//排序    
Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {   
public int compare(Map.Entry<String, Integer> o1,   
Map.Entry<String, Integer> o2) {   
return (o2.getValue() - o1.getValue());   
}   
});   
//排序后    
for (int i = 0; i < infoIds.size(); i++) {   
String id = infoIds.get(i).toString();   
System.out.println(id);   
}   
排序前:   
j2ee=10   
j2me=30   
j2se=20   
排序后:   
j2me=30   
j2se=20   
j2ee=10
------解决方案--------------------
楼主可以用下LinkedHashMap,是有序的,以前我也遇到过用LinkedHashMap解决问题,给你发个链接可以参考http://www.cnblogs.com/hubingxu/archive/2012/02/21/2361281.html
------解决方案--------------------
引用:
楼主可以用下LinkedHashMap,是有序的,以前我也遇到过用LinkedHashMap解决问题,给你发个链接可以参考http://www.cnblogs.com/hubingxu/archive/2012/02/21/2361281.html

即Map<String,String> r0=new LinkedHashMap<String,String>();
------解决方案--------------------
LinkedHashMap  试试 
  相关解决方案