[英]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.