Nhờ hướng dẫn ArrayList java

Em mới bắt đầu học Java ạ bài tập của em thì như hình bên dưới ạ


còn đây là phần code ạ

đây là class Gradelitem

public class Gradelitem {
    private String title;
    private float rate;
    private float mart;

    public Gradelitem() {
    }

    public Gradelitem(String title, float rate, float mart) {
        this.title = title;
        this.rate = rate;
        this.mart = mart;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public float getRate() {
        return rate;
    }

    public void setRate(float rate) {
        this.rate = rate;
    }

    public float getMart() {
        return mart;
    }

    public void setMart(float mart) {
        this.mart = mart;
    }

    @Override
    public String toString() {
        return "title=" + title + ", rate=" + rate + ", mart=" + mart + '}';
    }
}

đây là class Student

public class Student {
    private int code;
    private String name;
    ArrayList<Gradelitem> gradelitems;

    public Student() {
    }

    public Student(int code, String name, ArrayList<Gradelitem> gradelitems) {
        this.code = code;
        this.name = name;
        this.gradelitems = gradelitems;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public ArrayList<Gradelitem> getGradelitems() {
        return gradelitems;
    }

    public void setGradelitems(ArrayList<Gradelitem> gradelitems) {
        this.gradelitems = gradelitems;
    }
    
    public void addGradelitem(Gradelitem gra){
        this.gradelitems.add(gra);
    }
    
    public float getGPA(){
        float tmp = 0;
        for (Gradelitem gradelitem : gradelitems) {
             tmp = (gradelitem.getRate() * gradelitem.getMart());
        }
        return tmp/100.0f;
    }
    
    public boolean isPass(){
        return (getGPA() > 5);
    }

    @Override
    public String toString() {
        return "Student{" + "code=" + code + ", name=" + name + "Gradelitems=" + gradelitems.toString() + '}';
    }
    

}

đây là class course

public class Course {
    private int code;
    private String title;
    private LocalDate startDate, endDate;
    ArrayList<Student> students;

    public Course() {
        students = new ArrayList<Student>();
    }

    public Course(int code, String title, LocalDate startDate, LocalDate endDate, ArrayList<Student> students) {
        this.code = code;
        this.title = title;
        this.startDate = startDate;
        this.endDate = endDate;
        this.students = students;
    }

    public Course(int code, String title, ArrayList<Student> students) {
        this.code = code;
        this.title = title;
        this.students = students;
    }

    public Course(int code, ArrayList<Student> students) {
        this.code = code;
        this.students = students;
    }

    public int getCode() {
        return code;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public LocalDate getStartDate() {
        return startDate;
    }

    public void setStartDate(LocalDate startDate) {
        this.startDate = startDate;
    }

    public LocalDate getEndDate() {
        return endDate;
    }

    public void setEndDate(LocalDate endDate) {
        this.endDate = endDate;
    }

    public ArrayList<Student> getStudents() {
        return students;
    }

    public void setStudents(ArrayList<Student> students) {
        this.students = students;
    }
    
    public void addStudent(Student st){
        this.students.add(st);
    }
    
    public int getNumberOfPassStudent(){
        int count = 0;
        for (Student student : students) {
            if(student.isPass() == true){
                count ++;
            }
        }
        return count;
    }
    
    public int getNumberOfBisStudent(){
        return students.size() - getNumberOfPassStudent();
    }
    
    public void displayPassStudent(){
        for (Student student : students) {
            if(student.isPass() == true){
                System.out.println(student);
            }
        }
    }
    
    public void displayBisStudent(){
        for (Student student : students) {
            if(student.isPass() == false){
                System.out.println(student);
            }
        }
    }
    
    @Override
    public String toString() {
        return "Course{" + "code=" + code + ", title=" + title + ", startDate=" + startDate + ", endDate=" + endDate + '}'
                + "\nNumber of pass Student:" + getNumberOfPassStudent() + "\nNumber of bis Student: " + getNumberOfBisStudent();
    }

    
}

Vì mới học nên em chưa biết gọi tới Arraylist để sử dụng trong hàm main nên ai có thể giúp em phần main đc ko ạ

Chưa biết thì trước hết cứ làm theo kiểu mảng thôi bạn.

ArrayList xem như 1 dạng mảng động không khó gì khi thao tác với nó.

Bây giờ bạn chỉ cần biết 1 vài thao tác đơn giản thôi:

// TẠO MỚI
Student[] students = new Student[3];

// GÁN
students[0] = new Student(1232, "A", ...);
students[1] = new Student(1233, "B", ...);
students[2] = new Student(1234, "C", ...);
// students[3] = new Student(1234, "C", ...); // lỗi

// LẤY
boolean pass = students[0].isPass();

Tương đương với:

// TẠO MỚI
// Tên lớp nằm trong <> là tham số kiểu (Generic type parameter)
ArrayList<Student> students = new ArrayList<Student>(3); // cho trước số phần tử là 3, tuy nhiên vẫn có thể thêm nhiều hơn.
// ArrayList<Student> students = new ArrayList<Student>(); // không cho trước số phần tử

// GÁN
students.add(new Student(1231, "A", ....));
students.add(new Student(1232, "B", ....));
students.add(new Student(1233, "C", ....));
students.add(new Student(1234, "D", ....)); // thêm nhiều hơn

// LẤY
boolean pass = students.get(0).isPass(); // phương thức get nhận tham số là chỉ số của phần tử, tương tự mảng.

// ngoài ra còn nhiều phương thức hỗ trợ như:
// - chèn tại 1 vị trí: add(int index, E element).
// - loại bỏ 1 phần tử: remove(int index), remove(E element).

Thứ bạn cần tìn hiểu là: Generic type parameter.

2 Likes

Em cảm ơn anh đã giúp ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?