2017-01-27 108 views
0

我想要做的下面的方法是寻找一个特定的学生在一个数组列表中,名称和唯一编号(HUN)分别匹配键和keyInt。一旦找到该学生,它应该添加到本地数组列表returnStudent并返回它。但行returnStudent.add(student(i));给我一个错误,我不知道如何解决它,我需要它将特定的学生添加到本地数组列表。搜索并添加到数组列表

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; 
} 

在此先感谢。

+2

使用'我

+1

'给我一个错误'..那是什么错误? – Null

+1

学生和学生是不同的? – cuongptnk

回答

0

变化

returnStudent.add(student(i)); 

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

添加到特定索引,使用 -

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

- 既然你已经初始化i=0你SHA将遍历i < students.size(),或者您最终可能会在列表中访问get(i)不存在的值(基数索引为0)。通过students

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

这会添加特定的学生,我正在寻找returnStudent?我补充'我'的原因是因为学生'我'是一个即时通讯寻找 –

0

你环路 -


的另一种方式做你想要达到的使用Java8作为。但添加student(i)。最后注意s。将添加更改为students(i)

0

假设students是带有预填充数据的ArrayList,您可以执行以下操作。

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; 
} 

我已经改变了while循环foreach循环,使它看起来更简单和容易理解的。