2014-12-04 2 views
-2

Я пытаюсь заполнить ArrayList после серии тестов. Он работает отлично, но немного слишком хорошо. Он добавляет каждое значение дважды в список массивов. Вот мой код, я не понимаю, где может возникнуть проблема, поскольку я только fullresult.add один раз?добавлено дважды в ArrayList

public ArrayList<Student> filterClasses (String classe){ 
     ArrayList<Student> fullresult = new ArrayList<Student>(); 
     for (int i = 0; i < studentDB.StudentList.size(); i++) { 
      int classesSize = studentDB.StudentList.get(i).classes().size()/3; 
      for (int j = 0; j < classesSize ; j++){ 
       if (studentDB.StudentList.get(i).classes().contains(classe)){ 
        fullresult.add(studentDB.StudentList.get(i)); 
       } 
      } 
     } 
     System.out.println(fullresult); 
     return fullresult; 
    } 

РЕШЕНИЕ

я не нужен второй цикл:

public ArrayList<Student> filterClasses (String classe){ 
     ArrayList<Student> fullresult = new ArrayList<Student>(); 
     for (int i = 0; i < studentDB.StudentList.size(); i++) { 
       if (studentDB.StudentList.get(i).classes().contains(classe)){ 
        fullresult.add(studentDB.StudentList.get(i)); 
       } 
      } 

     System.out.println(fullresult.toString()); 
     return fullresult; 
    } 
+5

заменить fullresult.add (studentDB.StudentList.get (я)) с правильным индексом переменной .get (J) – MihaiC

+0

Знать мои тесты не работают должным образом, массив не полон данных Я хочу получить. – Tuytuy

+3

Или вы могли бы быть ленивым и использовать 'Set': P Больше не нужно делать обманы –

ответ

2

Я действительно не понимаю, почему вы

int classesSize = studentDB.StudentList.get(i).classes().size()/3; 

Так вот код что будет делать то, что я считаю нужным:

public ArrayList<Student> filterClasses (String classe){ 
     ArrayList<Student> fullresult = new ArrayList<Student>(); 
     for (Student student : studentDB) { 
       if (student.classes().contains(classe)){ 
        fullresult.add(student); 
       } 
      } 
     } 
     System.out.println(fullresult); 
     return fullresult; 
    } 
Смежные вопросы