2017-01-27 3 views
0

was ich versuche mit der unten stehenden Methode zu tun ist Suche nach einem bestimmten Schüler in einer Array-Liste, in der der Name und die eindeutige Nummer (HUN) den Schlüssel bzw. keyInt entsprechen. Sobald dieser Student gefunden wurde, sollte er zur lokalen Array-Liste returnStudent hinzufügen und ihn zurückgeben. Aber die Zeile returnStudent.add(student(i)); gibt mir einen Fehler und ich kann nicht herausfinden, wie ich es beheben kann, ich brauche es, um den spezifischen Schüler der lokalen Array-Liste hinzuzufügen.Suchen und Hinzufügen zu Array-Liste

public ArrayList<Student1> searchByKey(String key, int keyInt) 
{ 
    ArrayList<Student1> returnStudent = new ArrayList<Student1>(); 
    Student1 student = new Student1(key); 
    int i = 0; 
    while(i <= students.size()) 
    { 
     if(student.getName().equals(key) && student.getHUN() == keyInt) 
     { 
      return Student.add(student(i)); 
     } 
     i=i+1; 
    } 
    return returnStudent; 
} 

Vielen Dank im Voraus.

+2

Verwenden Sie 'i

+1

'gibt mir einen Fehler '.. was ist dieser Fehler? – Null

+1

Studenten und Schüler sind anders? – cuongptnk

Antwort

0

ändern

returnStudent.add(student(i)); 

zu

returnStudent.add(student); // student is the element 

auf einen bestimmten Index, Gebrauch zu addieren -

returnStudent.add(i, student); // i is the index to add element at 

Hinweis - da Sie i=0 initialisiert haben Sie sha ll iterieren Sie durch i < students.size() oder Sie können auf get(i) in der Liste für den Wert, der nicht existiert (Basis auf 0 indiziert).


Die andere Art und Weise zu tun, was Sie verwendet Java8 zu erreichen versuchen -

ArrayList<Student1> students = new ArrayList<>(); 

public ArrayList<Student1> searchByKey(String key, int keyInt) { 
    ArrayList<Student1> returnStudent = new ArrayList<>(); 
    Student1 student = new Student1(key); 
    students.forEach(element -> { 
     if (element.getName().equals(key) && element.getHUN() == keyInt) { 
      returnStudent.add(element); 
     } 
    }); 
    return returnStudent; 
} 
+0

würde dies den spezifischen Studenten hinzufügen, den ich suche, zurückzukommenStudent? Der Grund, warum ich 'ich' hinzugefügt habe, ist, weil der Student 'i' derjenige ist, nach dem ich suche –

0

Sie Schleife durch students. Aber fügen Sie student(i) hinzu. Notiere die s am Ende. Ändern Sie das Hinzufügen zu students(i).

0

Angenommen, ist ein ArrayList mit vorbelegten Daten, können Sie Folgendes tun.

public ArrayList<Student1> searchByKey(String key, int keyInt) { 
    ArrayList<Student1> returnStudent = new ArrayList<Student1>(); 

    for(Student1 student1 : students) { 
     if(student1.getName().equals(key) && student1.getHUN() == keyInt) { 
      returnStudent.add(student1); 
     } 
    } 

    return returnStudent; 
} 

Ich habe die while-Schleife in foreach-Schleife geändert, damit es einfacher und leichter verständlich aussieht.

Verwandte Themen