Как перебрать объект класса, который объявлен как ArrayList в другом классе? - PullRequest
0 голосов
/ 12 января 2020

Итак, у меня есть 2 класса: ClassRoom и Student.

В ClassRoom я создаю Arraylist, используя тип Student:

public class ClassRoom{
    int classID;
    String className;
    ArrayList<Student> studList = new ArrayList<>();

    public ClassRoom(int classID, String className){
        this.classID = classID;
        this.className = className;
    }

    public String toString(){
        return ("Class ID: " + classID + " Class name: " + className + " Students list: " + studList);
    } 

У меня также есть 2 функции. Один добавляет студента в список, а другой отправляет сообщение на номер телефона каждого студента. Вот где я как бы застрял.

    public void addStudent(int studID, String studName, int studPhoneNum){
        Student stud = new Student(studName, studID, studPhoneNum);
        studList.add(stud);
        System.out.println(studList);
    }

    public void sendMessage(int studPhoneNum){
        for (Student phone : studList[studPhoneNum]) {
            System.out.println("Sending message to: " + phone);
        }
    }

Я пытаюсь понять, как перебрать значение studPhoneNum в массиве studList.

Я получаю эту ошибку, когда пытаюсь сделать то, что вставил здесь: The type of the expression must be an array type but it resolved to ArrayList<Student>

Мне бы очень хотелось узнать, как решить эту проблему.

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 января 2020

Подумайте об использовании потоков для оптимизации кодирования:

public void sendMessage(int studPhoneNum){
  Student student = studList.stream().filter(student-> student.studPhoneNum == studPhoneNum).findFirst().get();
  System.out.println("Sending message to: " + student.studName + " at " + student.studPhoneNum);
}

Практически все это можно увидеть здесь: https://repl.it/@randycasburn / Stream-Filter? Language = java10 & folderId =

0 голосов
/ 12 января 2020

Ответ прост. ArrayList не является массивом. Чтобы получить доступ к элементу в ArrayList, используйте [your_array_list].get([your_index])

Так что для перебора ArrayList вы можете использовать

for(Student student: studList)
{
  System.out.println("Sending message to: " + student);
}

или

for(int i=0; i < studList.size(); ++i)
{
  System.out.println("Sending message to: " + studList.get(i));
}
...