實現功能:前提:confMember是sysUser的子集。java
實現:一、將confMember中的人員的isChecked=true;數組
二、將除了conMember的sysUser數據拼裝到;ide
三、將拼裝的參數對應到conMember中,返回拼裝好的conMemberList。code
報錯代碼: index:1,size:1 或 index:0,size:0get
//商戶獲取的部門人員列表:做對比,商戶人員和本地人員作對比,本地人員有的選中 List<SysUser> sysUsers = securityWebAdminProvider.listByDeptIdWithFilter(confGroup.getDeptId(), AdminConstants.SysRoleType.CASHLOAN_AUDIT_NORMAL, false, true); if (sysUsers == null) { logger.error("deptId:{},部門審覈人員爲空", confGroup.getDeptId()); return new BaseObjResponse<AllocateDetailDto>(RespConstants.GLOBAL_INNER_ERROR); } if (confMemberList == null) { logger.error("groupId:{},查詢用戶配置不存在", groupId); return new BaseObjResponse<AllocateDetailDto>(RespConstants.GLOBAL_INNER_ERROR); } if (!confMemberList.isEmpty()) { for (int i = 0; i < sysUsers.size(); i++) { for (int j = 0; j < confMemberList.size(); j++) { logger.error("memberId:{},商戶審覈人員", sysUsers.get(i).getId()); if (sysUsers.get(i).getId().equals(confMemberList.get(j).getMemberId())) { confMemberList.get(i).setMemberId(confMemberList.get(j).getMemberId()); confMemberList.get(i).setMemberName(confMemberList.get(j).getMemberName()); confMemberList.get(i).setIsChecked(true); break; } else { confMemberList.get(i).setMemberId(sysUsers.get(i).getId()); confMemberList.get(i).setMemberName(sysUsers.get(i).getName()); confMemberList.get(i).setIsChecked(false); } } } }
分析:其實這是一段錯誤的conMemberList的setit
緣由:一、confMemberList.size()有 本身的大小長度而且固定class
二、sysUser.size()大於confMemberList.size()長度配置
三、當 sysUser.size()大於confMemberList.size()長度時候,繼續confMemberList.get(i).setMemberId(confMemberList.get(j).getMemberId());會 致使溢出報錯。也就是上面的報錯信息。好比:sysUser.size()=2;confMemberList.size()=1;當繼續執行confMemberList.get(2).setMemberId(confMemberList.get(j).getMemberId()); 可是conMemberList.size()=1,2>1溢出數組List