The fundamental difference between List and Set (as you said) means that Set does not allow duplication, but List . So in your case, a Set more appropriate, since the student should not be able to enroll in the course twice. Actually, he should be able, but in the same semester. Thus, each student can have a set of CourseEnrollment objects, not Course objects.
Note that saving order is not impossible for Set - there are implementations (for example, LinkedHashSet ) that preserve the order of elements, and others, such as TreeSet , that preserve for sorted elements.
source share