繁体   English   中英

如何遍历数组列表以查找 Java 中的特定项?

[英]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();

假设您有questionchoice ,分别为13 ,代表当前问题和用户选择的答案。 你可以这样做:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM