日期:2014-05-19  浏览次数:20816 次

求大神看看这段代码的错误 急急急!!!
本帖最后由 leeleoloo 于 2012-12-27 09:42:21 编辑
private List<Map<String, Object>> getObjectList(PolicyBO policyBO) {
    List<Map<String, Object>> sourceObjectList = new ArrayList<Map<String, Object>>();
    Map<String, Object> sourceObjectMap = new HashMap<String, Object>();
    for (int i = 0; i < policyBO.getInsuredBOList().size(); i++) {
      sourceObjectMap.put("insured", policyBO.getInsuredBOList().get(i));
     
      sourceObjectList.add(sourceObjectMap);
    }
    return sourceObjectList;
  }


老大说有严重错误!!!
------解决方案--------------------
你这样写的结果是重复的。也就是重复显示第一个。
private List<Map<String, Object>> getObjectList(PolicyBO policyBO) {
    List<Map<String, Object>> sourceObjectList = new ArrayList<Map<String, Object>>();
   
    for (int i = 0; i < policyBO.getInsuredBOList().size(); i++) {
 Map<String, Object> sourceObjectMap = new HashMap<String, Object>();//放到循环体内才行
      sourceObjectMap.put("insured", policyBO.getInsuredBOList().get(i));
      // com.ebao.gs.pol.pub.service.upload.constant.UploadingConstants.ENTITY_INSURED
      sourceObjectList.add(sourceObjectMap);
    }
    return sourceObjectList;
  }

------解决方案--------------------
sourceObjectMap.put("insured", policyBO.getInsuredBOList().get(i));
添加Map的时候key一直是重复的!
HashMap:无序存放的,是新的操作类,key不允许重复.
------解决方案--------------------
两个错误
一:sourceObjectMap.put("insured", policyBO.getInsuredBOList().get(i));
导致你的map只有一个对象
二:sourceObjectList.add(sourceObjectMap);
导致你的List里面有重复数据,因为它在for循环里面

不明白你的需求,两种需求,导致最后的东西是不一样的。
一:每个对象都要在一个map里面,所有的然后全写入List
for(){
Map map = new ...
map.put();
list.add(map);
}

二:
map = new ...
for{
map.put("key", );//key不一样 
}
list.add(map);