今天要做一map的平行遍历,就是一个map(A)中存了另一个map(B)的key,然后就发现,在遍历后,存值的(B)莫其妙变大了,果断写了个小页面做了下测试代码如下:
<tr> <td style="width:100px;">遍历前</td> <td style="width:100px;"><s:property value="markingStatistic.taskList.size()"/></td> </tr> <tr> <td style="width:100px;">遍历</td> <td style="width:100px;"><s:property value="markingStatistic.taskList['adfasd']"/></td> </tr> <tr> <td style="width:100px;">遍历后</td> <td style="width:100px;"><s:property value="markingStatistic.taskList.size()"/></td> </tr>
这是java类:
public class MarkingStatistic { private List<String> examinationQuestionId = new ArrayList<String>();//试题ID列表 private Map<String, MarkingStatisticPerson> taskList = new HashMap<String,MarkingStatisticPerson>();//每个人的详细情况 public List<String> getExaminationQuestionId() { return examinationQuestionId; } public void setExaminationQuestionId(List<String> examinationQuestionId) { this.examinationQuestionId = examinationQuestionId; } public Map<String, MarkingStatisticPerson> getTaskList() { return taskList; } public void setTaskList(Map<String, MarkingStatisticPerson> taskList) { this.taskList = taskList; } }
这是结果:
分析后,发现,只要是那个key在原来的里面不存在的,都会自动加1,请问这是为什么?
1、你用的struts2版本,那段代码你确定没有删减?
2、按照正常逻辑是没有问题;
3、能否贴出比较完整的代码,从你现在的代码看不出问题;
4、如果代码就是这样 可能taskList 的数据结构Map 实现有问题,你看一下Map实现是什么?
5、比如你的代码中是否有, "ognl表达式=null" 判断是null的代码写错了,这样会把null赋值;
尝试把Map遍历一下:
看完你的代码我也感觉到诡异,难道使用
[]
他会在put一次?
那尝试
外层
======迭代key
/s:iterator
看输出的有没有 adfasd