我正在尝试使用下面的方法查找数组列表中的特定学生,其中名称和唯一编号(HUN)分别与key和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;
}
提前致谢。
答案 0 :(得分: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
,因此您应该遍历i < students.size()
,否则您最终可能会访问get(i)
不存在的值的列表(基数索引为0)。
实现您想要实现的目标的另一种方法是使用Java8作为 -
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;
}
答案 1 :(得分:0)
您循环浏览students
。但是添加student(i)
。注意最后的s。将添加更改为students(i)
。
答案 2 :(得分: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循环,使其看起来更简单易懂。