【List集合】实际开发中,解决 list存放map对象出现简化符代表的情况

【问题:】把一个对象循环放进Map对象中,Map不能是全局变量,因为每循环一次,新new一个对象,第二次new的对象会放进第一次new 的对象的map地址里。会出现简化符代表

的情况,如下:

  "arraylist0": [

            {

                "$ref": "$.data.arraylist4[0]"

            }

        ],

        "arraylist2": [

            {

                "$ref": "$.data.arraylist4[0]"

            }

        ],

        "arraylist1": [

            {

                "$ref": "$.data.arraylist4[0]"

            }

【原因:】

同一个对象多次传入一个jsonObject,第二个就会简化符表示第二个以后的对象。

【解决办法:】

把初始化map对象放到for循环里面,每次存对象都是一个新的map集合。

如下:

 

// 保单列表
if (prpprintpoolList != null && prpprintpoolList.size() > 0) {
for (i = 0; i < prpprintpoolList.size(); i++) {
Map mapResult = new HashMap();
prpprintpool = prpprintpoolList.get(i);
// 查询经办人姓名
QueryRule queryRule = QueryRule.getInstance();
queryRule.addEqual("userCode", prpprintpool.getHandlerCode());
prpDuserList = prpDuserDao.findAllByQueryRule(queryRule);
if (prpDuserList !=null && prpDuserList.size() > 0) {
prpDuser = prpDuserList.get(0);
strHandlerName = prpDuser.getUserName();
}
// 查询操作员姓名
QueryRule queryRuleCode = QueryRule.getInstance();
queryRuleCode.addEqual("userCode", prpprintpool.getOperatorCode());
prpDuserList = prpDuserDao.findAllByQueryRule(queryRuleCode);
if (prpDuserList !=null && prpDuserList.size() > 0) {
prpDuser = prpDuserList.get(0);
}
strOperatorName = prpDuser.getUserName();
// 查询号牌号码
QueryRule queryRulePrpcitemcar = QueryRule.getInstance();
queryRulePrpcitemcar.addEqual("id.policyNo", prpprintpool.getPolicyNo());
queryRulePrpcitemcar.addEqual("id.itemNo", StringUtils.isLongNULL("1"));
List<Prpcitemcar> prpcitemcarList = prpCitemCarDao.findAllByQueryRule(queryRulePrpcitemcar);
if (prpcitemcarList != null && prpcitemcarList.size() > 0) {
prpcitemcar = prpcitemcarList.get(0);
}
strLicenseNo = prpcitemcar.getLicenseNo();
list.add(prpprintpool.getPolicyNo());
listPrintno.add(prpprintpool.getPrintNo());

mapResult.put("policyNo", prpprintpool.getPolicyNo());
mapResult.put("strLicenseNo", strLicenseNo);
mapResult.put("insuredName", prpprintpool.getInsuredName());
mapResult.put("strHandlerName", strHandlerName);
mapResult.put("strOperatorName", strOperatorName);
mapResult.put("startDate", prpprintpool.getStartDate());
arraylist.add(mapResult);
}
}
resultMap.put("arraylist", arraylist);// 查询得到的保单号

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章