报错 index:1,size:1 或 index:0,size:0

实现功能:前提: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

相关文章
相关标签/搜索