[英]How can I iterate through an arraylist to find a specific item in Java?
假设我正在创建某种测验应用程序,并且我需要查看用户选择的输入的 Answer 对象的数组列表,我该怎么做?
我的 ArrayList 是这样的:
ArrayList<Answer> answers = new ArrayList<Answer>();
answers.add(new Answer(1, "A singer", true, 1));
answers.add(new Answer(1, "A chef", false, 2));
answers.add(new Answer(1, "A banana", false, 3));
answers.add(new Answer(1, "A pineapple", false, 4));
answer 类有一个 int ID(将它们与问题分组)、一个 String 答案、一个布尔值 isCorrect 和一个 int 数字,这是用户在查看答案时选择的数字。
我只需要能够说出相应的答案是否正确
谢谢!
像这样的东西。
List<String[]> arrayList = new List<String[]>();
private String[] test1= {"123", "ABC", "USA"};
private String[] test2= {"", "BGD", "UK"};
arrayList.add(test1);
arrayList.add(test2);
for (String[] arr : arrayList)
{
string ID= arr[0];
string name= arr[1];
string address= arr[2];
用于每个循环
for(Answer a: answers) {
int qid= a.getID();
String ans = a.getAns();
boolean res = a.getRes();
int ansid= a.getAnsID();
//compare result with this and print what you want
}
您可以使用 Java 8 或更高版本的Streams
int currentQuestion = 1;
answers.stream().filter((a) -> (a.id == currentQuestion) && a.isCorrect)).findFirst().get();
假设您有question
和choice
,分别为1
和3
,代表当前问题和用户选择的答案。 你可以这样做:
for (Answer answer : answers) {
if (question == answer.getQuestion() && choice == answer.getChoice()) {
return answer.isCorrect();
}
}
throw new IllegalStateException("Choice not found???");
但最好将每个问题的选择列表放入地图中:
Map<Integer, List<Answer>> answers = new HashMap<>();
answers.put(1, List.of(
new Answer(1, "A singer", true, 1),
new Answer(1, "A chef", false, 2),
new Answer(1, "A banana", false, 3),
new Answer(1, "A pineapple", false, 4)));
然后,您可以在给定点仅提取您感兴趣的问题的答案列表:
List<Answer> relevantAnswers = answers.get(question);
然后只循环对当前问题重要的那些。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.