@Data
@AllArgsConstructor
public class Faculty {
private String facultyName;
}
@Data
@AllArgsConstructor
public class Student {
private String name;
private Integer age;
}
@Data
public class Enrollment {
private Student student;
private Faculty faculty;
}
@Data
public class University {
private String universityName;
private Integer worldRank;
private List<Faculty> faculties = new ArrayList<>();
private List<Student> students = new ArrayList<>();
private List<Enrollment> enrollments = new ArrayList<>();
public boolean addStudent(String name, Integer age) {
if (name == null || name.length() < 2 || age == null || age < 15 || age > 95) {
return false;
}
if (students.stream().map(Student::getName).anyMatch(item -> item.equals(name))) {
return false;
}
students.add(new Student(name, age));
return true;
}
public boolean addFaculty(String facultyName) {
if (facultyName == null || facultyName.length() < 3) {
return false;
}
if (faculties.stream().map(Faculty::getFacultyName).anyMatch(item -> item.equals(facultyName))) {
return false;
}
faculties.add(new Faculty(facultyName));
return true;
}
}
示例中使用了 lombok 注解,编译时会自动生成 get/set/toString 方法以及构造方法,也可以手工编写这些方法。