Интерфейс List и его реализация

159
26 января 2021, 04:00

есть такое задание:

"Напишите класс Student, предоставляющий информацию об имени студента методом getName() и о его курсе методом getCourse().

Напишите метод printStudents(List students, int course), который получает список студентов и номер курса и печатает в консоль имена тех студентов из списка, которые обучаются на данном курсе. Для обхода списка в этом методе используйте итератор.

Протестируйте ваш метод (для этого предварительно придется создать десяток объектов класса Student и поместить их в список)."

вот как я начал:

public class University {
  public static void main(String[] args) {
  }
}
public class Student {
  private String name;
  private int course;
  public String getName(){
    return name;
  }
  public int getCourse(){
    return course;
  }
  public void prinrStudent(List students, int course){
  }
}

вот к чему я пришёл изучив код Дмитрия и почитав ресурсы на сайтах:

import java.util.ArrayList;
import java.util.List;
public class University {
  public static void main(String[] args) {
    Student student = new Student();
    List<Student> list = new ArrayList<>();
    list.add(new Student("Кот Майер Дулит", 2));
    list.add(new Student("Рилка Тон Браво", 5));
    list.add(new Student("Даман Сон Гаал", 3));
    list.add(new Student("Ци Мир Мина", 3));
    list.add(new Student("Пора Винична Шестая", 1));
    list.add(new Student("Кто-То Котэньё", 2));
    list.add(new Student("Василь Ивыч Кобзарь", 4));
    list.add(new Student("Памяти Не-Тлен", 5));
    list.add(new Student("Дыга Особо Шустый", 2));
    student.printStudent(list, 2);
  }
}
import java.util.Iterator;
import java.util.List;
public class Student {
  private String name;
  private int course;
  public Student() {}
  public Student(String name, int course) {
    this.name = name;
    this.course = course;
  }
  public String getName(){
    return this.name;
  }
  public int getCourse(){
    return this.course;
  }
  public void printStudent(List students, int course) {
    System.out.println("курс "+course);
    Iterator<Student> iter = students.iterator();
    while (iter.hasNext()) {
      Student student = iter.next();
      if (course == student.getCourse()) System.out.println(student.getName());
    }
  }
}

большая просьба прокомментировать и сказать что плохо и что имеет место быть

Answer 1
public class Student {
    private final static List <Student> STUDENTS = new ArrayList<>();
    private final String name;
    private final int course;
    public Student(String name, int course) {
        this.name = name;
        this.course = course;
    }
    public String getName() {
        return name;
    }
    public int getCourse() {
        return course;
    }
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 59 * hash + Objects.hashCode(this.name);
        hash = 59 * hash + this.course;
        return hash;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null) return false;
        if (getClass() != obj.getClass()) return false;
        final Student other = (Student) obj;
        if (this.course != other.course) return false;
        if (!Objects.equals(this.name, other.name)) return false;
        return true;
    }
    @Override
    public String toString() {
        return "Student{" + "name=" + name + ", course=" + course + '}';
    }
    public static void printStudent(int course) {
        Iterator <Student> studentIterator = STUDENTS.iterator();
        while(studentIterator.hasNext()){
            Student student = studentIterator.next();
            if (course==student.getCourse()) System.out.println(student);
        }
    }
    public static void addStudent(Student student){
        STUDENTS.add(student);
    }
    public static void deleteStudent(Student student){
        STUDENTS.remove(student);
    }
    public static boolean replaceStudent(Student fromStudent, Student toStudent){
        for (int i = 0; i < STUDENTS.size(); i++) {
            if (STUDENTS.get(i).equals(fromStudent)) {
                STUDENTS.set(i, toStudent);
                return true;
            }
        }
        return false;
    }
}

public class University {
    public static void main(String[] args) {
        Student.addStudent(new Student("aaa", 1));
        Student.addStudent(new Student("bbb", 2));
        Student.addStudent(new Student("ccc", 5));
        Student.addStudent(new Student("ddd", 4));
        Student.addStudent(new Student("eee", 3));
        Student.addStudent(new Student("fff", 3));
        Student.addStudent(new Student("ggg", 5));
        Student.addStudent(new Student("hhh", 1));
        Student.addStudent(new Student("iii", 2));
        Student.addStudent(new Student("jjj", 2));
        Student.addStudent(new Student("kkk", 5));
        Student.addStudent(new Student("lll", 1));
        Student.addStudent(new Student("mmm", 4));
        System.out.println("COURSE 2: ");
        Student.printStudent(2);
        System.out.println("COURSE 3: ");
        Student.printStudent(5);
    }
}
READ ALSO
Логика построения кода

Логика построения кода

Объясните по какой логике должна работать программа, у меня есть две TableView, выделяешь элемент в первой таблице, во второй таблице отображаются...

158
Стоит ли работать над legacy проектами? [закрыт]

Стоит ли работать над legacy проектами? [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах

132
Два разных infoWindow для разных маркеров

Два разных infoWindow для разных маркеров

Всем привет,подскажите пожалуйста,как можно для разных групп маркеров,создающихся через

145
Dragenter срабатывает на другие элементы

Dragenter срабатывает на другие элементы

Делаю drag and drop файла на чистом JS и возникла проблема с ивентом DragEnterМне нужно отловить Event , то что я начал перемещать файлы в окно браузера...

125