【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);// 查詢得到的保單號

 

 

 

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