List list = getAllOption();//获取所有的选择题
int[] arr = createArr()//产生一个随机数组,数组中所有的值在0-list.size()之间
List data = new ArrazyList();//存放组卷的试题
for(int index:arr){
data.add(list.get(index));
}

解决方案 »

  1.   

    我给你一个简单的思路:
    1.你组卷的题目类型,比如选择题、判断题、简单题,每一个类型都要定义一个集合,因为每种类型的题目数量的固定的嘛,你得到数据之后,把数据分别放到各自的集合,然后随机排序之后,再把数据放到页面显示。
    2.你后台大致应是这样,通过这种SQL语句:select * from 题目 where 题目类型=xxx分别得到所有类型下的题目的数据,分类放到不同的List集合。
    3.因为你卷子上每种类型题目的数量是固定的,比如选择题5道,判断题10道,简答题5道,这样没关系,简单一些来做,你选分别随机排序你的集合,然后循环取固定前几条就OK,不知道你明白没,举个栗子:List chooseQuestionsResult=...(调用你的service得到数据);
    List chooseQuestions=new ArrayList();  //定义一个空集合用于存放你指定数量的题目
    Collections.shuffle(chooseQuestionsResult);  // 这个方法会对你的List集合的数据进行随机排序
    for(int i=0;i<5;i++){    //这里就是说比如你选择题规定只有5道,你就从随机排序后的集合取5个
        chooseQuestions.add(chooseQuestionsResult.get(i));  //取出来放到上面定义的容器集合
    }然后数据就OK了,往页面上放就是了。这是一个简单版的思路,仅供参考。
      

  2.   

    一个试卷有n个试卷类型,一个试卷类型有n个试题,一个试题有n个选项   页面依次读取数据