请问一个集合排序的问题,集合大小保持12不变,没有勾选的月份字段为99,勾选的月份为对应的1-12,也要对应集合的下标的位置 比如1月对应下标0,如何完美排序。

img

用代码块功能插入代码,请勿粘贴截图
   public InternalAuditPlanElementVo reflectionFactorValueAssignment(List<InternalAuditElement> elementList) {
        elementList = elementList.stream().sorted(Comparator.comparing(InternalAuditElement::getAuditMonth).reversed()).collect(Collectors.toList());
        InternalAuditPlanElementVo elementVo = new InternalAuditPlanElementVo();
        //根据月份交换元素位置 进行反射赋值
        for (int i = 1; i <= elementList.size(); i++) {
            for (int e = 0; e < elementList.size(); e++) {
                InternalAuditElement element = elementList.get(i - 1);
                //InternalAuditConstants.InternalAuditElementMonthState.NULL_MONTH.getCode()为字符串99
                if (!InternalAuditConstants.InternalAuditElementMonthState.NULL_MONTH.getCode().equals(element.getAuditMonth())) {
                    int mobileIndex = Integer.parseInt(element.getAuditMonth()) - 1;
                    Collections.swap(elementList, i - 1, mobileIndex);
                }
                break;
            }
        }
        try {
            //外层月份
            for (int i = 1; i <= ELEMENT_MONTH; i++) {
                //内层控制要素数据的变动 每个字段 对应auditMonth 1-12 赋值了vo就进入下一条记录的赋值
                for (int e = 0; e < elementList.size(); e++) {
                    InternalAuditElement internalAuditElement = elementList.get(i - 1);
                    elementVo.setElementName(internalAuditElement.getElementName());
                    String parameter = "auditMonth" + i;
                    Field auditMonth = elementVo.getClass().getDeclaredField(parameter);
                    //如果取出来的数据库数据 不是99 并且字段对应的是当前遍历的auditMonth 1-12 则赋值对应要素状态
                    if (!InternalAuditConstants.InternalAuditElementMonthState.NULL_MONTH.getCode().equals(internalAuditElement.getAuditMonth())
                            && auditMonth.getName().equals(parameter)) {
                        auditMonth.set(elementVo, internalAuditElement.getElementState());
                    } else {
                        //否则都为99
                        auditMonth.set(elementVo, InternalAuditConstants.InternalAuditElementMonthState.NULL_MONTH.getCode());
                    }
                    //处理完毕进入下一个auditMonth月份 给vo赋值
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return elementVo;
    }

运行结果及报错内容

有bug,会导致1-12对应的下标不正确

我想要达到的结果

集合下标保持12个不变,没有勾选的月份为99,勾选的月份为对应的1-12,也要对应集合的下标的位置 比如1月对应下标0

为啥不在element里面加一个字段标识实际是哪个月份