我知道你可以在指定索引处向一个arraylist添加对象,但我想知道放在这些索引之前,之后和之间的索引会发生什么。
我正在实施考试评分系统,我有一个Student getAnswers()方法,可以检索学生在考试中提供的所有答案。我将它存储在arrayList中。
ArrayList<Answer> studentAnswers = new ArrayList<Answer>();
现在每个答案都知道它对应的问题编号,所以在这个arraylist中我想将答案添加到questionNumber指定的索引中。
for(Answer s: getAnswers()){
studentAnswer.set(s.getQuestionNumber(), s);
}
我的问题是,如果学生没有回答其中一个问题,我希望它是一个空答案。我不知道这是否是处理这个问题的正确方法。 一个例子是:
StudentAnswer [question 1, "Foo"]
StudentAnswer [question 2, "Class"]
StudentAnswer [question 4, "Object"]
如果答案密钥是["Foo", "Class", "Interface", "Object"]
studentAnswers列表应如下所示:["Foo", "Class", Null, "Object"]
空虚,因为他没有回答问题3.
我不知道这是否是处理这个问题的正确方法。
答案 0 :(得分:0)
我觉得数组而不是ArrayList更适合这个问题,因为你需要用你的问题数来初始化数组的大小。
import java.util.Arrays;
class StudentAnswer {
private int id;
private String value;
public StudentAnswer(int id, String ans) {
this.id = id;
this.value = ans;
}
public int getQuestionNumber() {
return this.id;
}
public String toString() {
return this.value;
}
}
class Main {
public static void main(String[] args) {
StudentAnswer a0 = new StudentAnswer(0, "Foo");
StudentAnswer a1 = new StudentAnswer(1, "Class");
StudentAnswer a3 = new StudentAnswer(3, "Object");
int totalQuestions = 4;
StudentAnswer[] answers = new StudentAnswer[totalQuestions];
answers[a0.getQuestionNumber()] = a0;
answers[a1.getQuestionNumber()] = a1;
answers[a3.getQuestionNumber()] = a3;
System.out.println(Arrays.asList(answers));
}
}
[Foo, Class, null, Object]
注意:除非您修改toString
中的StudentAnswer
方法,否则引号不会显示在字符串上。