public class Student implements java.io.Serializable {
private long studentId;
private String studentName;
private Set<Course> courses = new HashSet<Course>(0);
public Student() {
}
public Student(String studentName) {
this.studentName = studentName;
}
public Student(String studentName, Set<Course> courses) {
this.studentName = studentName;
this.courses = courses;
}
public long getStudentId() {
return this.studentId;
}
public void setStudentId(long studentId) {
this.studentId = studentId;
}
public String getStudentName() {
return this.studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public Set<Course> getCourses() {
return this.courses;
}
public void setCourses(Set<Course> courses) {
this.courses = courses;
}
}
他们在这里使用Hashset来获取课程。我怀疑是否可以使用列表来获取 这里的课程。我在互联网上读到该列表以指定的顺序获得vaues并允许 在列表中重复。而在集合中它没有任何订单,也不会允许 重复。我想知道我应该在哪里使用集合和列表?有人可以建议吗?
答案 0 :(得分:6)
感觉你已经回答了自己的问题。如果您需要项目集合,并且您希望项目集合没有重复项,请使用集合。您可以使用SortedSet强加订购。
如果允许您的收藏集具有重复项,则可以使用列表。我认为在你的例子中,一个集合起作用,因为学生可能永远不会两次使用相同的课程。
答案 1 :(得分:3)
List
和Set
之间的根本区别在于(正如您所说)Set
不允许重复,而List
则允许重复。因此,在您的情况下,Set
更合适,因为学生不应该在课程中注册两次。实际上,他应该能够,但是在同一个学期。因此,您可能让每个学生都有一组CourseEnrollment
个对象,而不是Course
个对象。
请注意,保留顺序对于Set
来说并非不可能 - 有些实现(如LinkedHashSet
)保留了元素的顺序,而其他实现(如TreeSet
)则保留了元素排序