Java ejemplo- relación de muchos

El uso de colecciones sólo pueden representar relación de uno a muchos de ellos también se puede expresar. Por ejemplo, un estudiante puede elegir muchos cursos, un curso puede tener más estudiantes, entonces esta es una relación típica-muchos.

Para completar los requisitos anteriores, debe definir primero dos categorías, a saber la clase de información del estudiante (Estudiante), información de golf de clase (Curso). En presencia de los estudiantes en una clase de la colección, guardar todos los cursos. Del mismo modo, en el supuesto, también hay una colección de clases, excepto todos los estudiantes.
1. La definición de clase del estudiante

public class Student {
    private String name;
    private int age;
    private List<Course> allCourses; // 定义集合保存全部课程

    private Student() {
        this.allCourses = new ArrayList<Course>();// 实例化List集合
    }

    // 通过构造方法设置内容
    public Student(String name, int age) {
        // 调用无参构造
        this();
        this.setName(name);
        this.setAge(age);
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List<Course> getAllCourses() {
        return allCourses;
    }

    public void setAllCourses(List<Course> allCourses) {
        this.allCourses = allCourses;
    }

    // 重写toString()方法
    public String toString() {
        return "学生姓名:" + this.name + ":年龄" + this.age;
    }
}

No es un estudiante en la clase de colección Lista allCourses, por lo que el programa se está ejecutando, un estudiante en la clase puede guardar varios objetos del curso.

2. La definición del plan de estudios de la clase

public class Course {
    private String name;
    private int credit;
    // 定义集合保存多个学生
    private List<Student> allStudents;

    private Course() {
        // 实例化List集合
        this.allStudents = new ArrayList<Student>();
    }

    public Course(String name, int credit) {
        this();
        this.setName(name);
        this.setCredit(credit);
    }

    public String getName() {
        return name;
    }

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

    public int getCredit() {
        return credit;
    }

    public void setCredit(int credit) {
        this.credit = credit;
    }

    public List<Student> getAllStudents() {
        return allStudents;
    }

    public void setAllStudents(List<Student> allStudents) {
        this.allStudents = allStudents;
    }

    // 重写toString()方法
    public String toString() {
        return "课程名称" + this.name + ";课程学分" + this.credit;
    }
}

Cursos y clases de los estudiantes, define una colección lista para guardar información múltiple estudiante.

3. Programa de prueba

public class TestMore {
    public static void main(String[] args) {
        // 实例化课程对象
        Course c1 = new Course("英语", 3);
        Course c2 = new Course("计算机", 5);
        // 实例化学生对象
        Student s1 = new Student("张三", 20);
        Student s2 = new Student("李四", 21);
        Student s3 = new Student("王五", 22);
        Student s4 = new Student("赵六", 23);
        Student s5 = new Student("孙七", 24);
        Student s6 = new Student("钱八", 25);
        // 第一门课程有3个人参加,向课程中增加3个学生信息,同时向学生中增加课程信息
        c1.getAllStudents().add(s1);
        c1.getAllStudents().add(s2);
        c1.getAllStudents().add(s6);
        s1.getAllCourses().add(c1);
        s2.getAllCourses().add(c1);
        s6.getAllCourses().add(c1);
        // 第二门课程有6个人参加,向课程中增加6个学生信息,同时向学生中添加课程信息
        // 向课程中增加学生信息
        c2.getAllStudents().add(s1);
        c2.getAllStudents().add(s2);
        c2.getAllStudents().add(s3);
        c2.getAllStudents().add(s4);
        c2.getAllStudents().add(s5);
        c2.getAllStudents().add(s6);
        // 像学生中增加课程信息
        s1.getAllCourses().add(c2);
        s2.getAllCourses().add(c2);
        s3.getAllCourses().add(c2);
        s4.getAllCourses().add(c2);
        s5.getAllCourses().add(c2);
        s6.getAllCourses().add(c2);
        // 输出一门课程的信息,观察一门课程有多少个学生参加
        System.out.println(c1); // 输出第一门课程
        Iterator<Student> iter1 = c1.getAllStudents().iterator();
        // 迭代输出
        while (iter1.hasNext()) {
            Student s = iter1.next();
            System.out.println("\t" + s);
        }
        // 输出一个学生参加的课程信息,观察有多少门课程
        System.out.println(s6);
        Iterator<Course> iter2 = s6.getAllCourses().iterator();
        while (iter2.hasNext()) {
            // 取得所参加的课程
            Course c = iter2.next();
            // 输出课程信息
            System.out.println("\t" + c);
        }
    }
}

salida:

课程名称英语;课程学分3
    学生姓名:张三:年龄20
    学生姓名:李四:年龄21
    学生姓名:钱八:年龄25
学生姓名:钱八:年龄25
    课程名称英语;课程学分3
    课程名称计算机;课程学分5

El programa utiliza un contrato de dos vías con la relación, para que los estudiantes en la elección de un curso, además de los cursos que desee agregar los estudiantes, sino también añadir la información del curso entre los estudiantes. Cuando la información del curso de salida, los estudiantes pueden encontrar toda la información para participar en este curso por la recolección de objetos por supuesto, también se puede encontrar información sobre todos los cursos realizados por los estudiantes.

Publicados 457 artículos originales · ganado elogios 94 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_45743799/article/details/104718195
Recomendado
Clasificación