首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在此场景中应该使用哪个集合?

问在此场景中应该使用哪个集合?
EN

Stack Overflow用户
提问于 2011-09-06 03:13:07
回答 5查看 1.4K关注 0票数 2

有没有人能建议我在这个场景中使用哪个集合:

每个学生都有一个付款记录,其中包含学生/家庭付款的详细信息。系统应确保不存在针对学生帐户的重复付款。该程序应该能够添加学生的付款详细信息,并确保重复的付款详细信息不会被注册。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-06 03:16:12

也许一个Map<Student, Set<Payment>>就可以了。

( Set不允许重复。)

如果您正确地覆盖了equals (和hashCode),您可以这样做

代码语言:javascript
复制
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.");
}
票数 6
EN

Stack Overflow用户

发布于 2011-09-06 03:15:50

只要您有不重复的要求,就使用Set。如果您使用HashSet,请确保在放入set中的Objects (以及equals)上实现hashCode。

票数 3
EN

Stack Overflow用户

发布于 2011-09-06 03:17:30

您可能会发现学生到一组付款的地图很有帮助

代码语言:javascript
复制
Map<Student, Set<Payment>> studenthistory;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7311934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档