有没有人能建议我在这个场景中使用哪个集合:
每个学生都有一个付款记录,其中包含学生/家庭付款的详细信息。系统应确保不存在针对学生帐户的重复付款。该程序应该能够添加学生的付款详细信息,并确保重复的付款详细信息不会被注册。
发布于 2011-09-06 03:16:12
也许一个Map<Student, Set<Payment>>就可以了。
( Set不允许重复。)
如果您正确地覆盖了equals (和hashCode),您可以这样做
Map<Student, Set<Payment>> studentPayments =new HashMap<Student, Set<Payment>>();
public void addStudentPayment(Student student, Payment payment) {
if (!studentPayments.containsKey(student))
studentPayments.put(student, new HashSet<Payment>());
if (studentPayments.get(student).add(payment))
System.out.println("Payment was added");
else
System.out.println("Duplicate found. Payment not added.");
}发布于 2011-09-06 03:15:50
只要您有不重复的要求,就使用Set。如果您使用HashSet,请确保在放入set中的Objects (以及equals)上实现hashCode。
发布于 2011-09-06 03:17:30
您可能会发现学生到一组付款的地图很有帮助
Map<Student, Set<Payment>> studenthistory;https://stackoverflow.com/questions/7311934
复制相似问题