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

时间:2024-06-02 07:54:17

实现功能:前提:confMember是sysUser的子集。

实现:1、将confMember中的人员的isChecked=true;

2、将除了conMember的sysUser数据拼装到;

3、将拼装的参数对应到conMember中,返回拼装好的conMemberList。

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

//商户获取的部门人员列表:作对比,商户人员和本地人员做对比,本地人员有的选中
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的set

原因:1、confMemberList.size()有 自己的大小长度并且固定

2、sysUser.size()大于confMemberList.size()长度

3、当 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溢出数组

欢迎加入 ****技术交流群:QQ群:681223095,方便问题讨论。博主不一定长期在线,但是qq群里会有很多热心的小伙伴,大家一起讨论解决问题。
关注公众号,更多学习内容给予推送,争取每日更新

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