搜索并添加到数组列表

时间:2017-01-27 18:29:43

标签: java arraylist

我正在尝试使用下面的方法查找数组列表中的特定学生,其中名称和唯一编号(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;
}

提前致谢。

3 个答案:

答案 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循环,使其看起来更简单易懂。