簡體   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