/** * 封装材料和材料下小题 * * @param questionsMap 含有试卷所有小题的map */ private void fixArtAndQuestions(Map<Integer, List<Question>> questionsMap) { for (Iterator<List<Question>> iterator = questionsMap.values().iterator(); iterator.hasNext(); ) { List<Question> questions = iterator.next(); List<Integer> needRemovedQues = null; for (Iterator<Question> iterator2 = questions.iterator(); iterator2.hasNext(); ) { Question question = iterator2.next(); if (question.getQuestionType() == 6) { // 当前小题是材料时,才进行添加孩子小题的操作 int quesIndex = questions.indexOf(question); // 得到当前小题的索引 String referIds = question.getReferIds(); if (!referIds.equals("")) { // 由于查出的数据是按照顺序排列的,所以材料下的小题的索引是紧接着材料的索引号的 for (int i = 1; i <= referIds.split(",").length; i++) { question.addChildQuestion(questions.get(quesIndex + i)); if (needRemovedQues == null) needRemovedQues = new ArrayList<Integer>(); needRemovedQues.add(quesIndex + i); // 将小题存到需删除小题列表中 } } } } if (needRemovedQues != null) { for (int i = 0; i < needRemovedQues.size(); i++) // 删除材料下小题 questions.remove(needRemovedQues.get(i)); } } }