【发布时间】:2015-07-16 12:03:59
【问题描述】:
我需要创建 3 个数据结构。
第一个是Persons的集合(PersonRegister):
public Person {
private final int uniquePersonId; // Unique identifier
private long personalNumber;
private String name;
// additional code
}
第二个是InsuranceRegister的集合(InsuranceRegister):
public Insurance {
private final int uniqueInsuranceId; // Unique identifier
private int uniquePersonId; // Is used as a link between the insurance and person
private Date date;
private boolean active;
// additional code
}
第三个是ClaimsRegister的集合:
public Insurance {
private final int uniqueClaimId; // Unique identifer
private int uniquePersonId; // Is used as a link between the claim and person
private Date date;
// additional code
}
每个对象都覆盖了 equals() 和 hashCode() 方法。
不需要删除任何数据结构,因为旧数据将用于统计等。
数据结构不包含重复项也很重要。
将用于这些数据结构的方法例如:
- 查找特定 personId 的保险/索赔。
- 查找在给定时间范围内提交的所有索赔/保险。
- 根据 personId 或 personalNumber 查找人员
- 查找所有具有特定姓氏的人
- 查找特定人员的所有有效保险。
- 查找特定子类类型的所有保险/索赔(例如 CarInsurance 或 HomeInsurance,两者都是 Insurance 的子类)
列表一直持续到您命名为止。适合综合统计和搜索功能的任何类型的数据。
其中很多方法将使用带有迭代器的高级 for 循环。
就目前而言,将 Person 与其保险联系起来的唯一方法是 通过将 uniquePersonId 变量相互比较。可不可能是 最好让每个人都拥有一个包含对象引用的列表 其保险和索赔?
另外让每个保险/索赔都有一个对其的对象引用 父母/所有者?或者这被认为是不好的做法,被“分离 担忧”?
它会生成诸如确定 boolean totalCustomer(True if you have 超过 3 个有效保险)更容易放置在人体内 班级。有什么建议吗?
无论如何,对于主要问题。哪些集合最适合每种数据结构? (仅限于 Java 集合)
目前/暂时我有 3 个带有 if(!list.contains(newElement)) { add(newElement) }; 的 ArrayLists防止重复。
遍历 for 循环时,ArrayList 不是比 HashSet 或 HashMap 快吗?但它的速度是否足够快以至于有价值?
考虑到不允许重复,我一直认为 HashSet 会是更好的做法,还是我的“重复解决方案”足够好? HashMap 对考虑到每次搜索保险或索赔时都会使用 uniquePersonId 的人来说可能是有意义的。
但是,我仍然想要搜索personalNumber 或任何其他人的功能。像Iterate through a HashMap 这样的迭代是否仍然足够有效,并有助于进行良好的编程设计?
我在 stackoverflow 和 google 上花费了无数小时试图弄清楚这一点。任何建议和帮助将不胜感激。谢谢。
编辑:Difference between HashSet and HashMap? 被链接为可能的重复问题,但是该线程仅解释了 HashSet 和 HashMap 之间的区别,并带有 Oracles Collection 教程的链接。我知道大多数差异。我还阅读了 Collection 教程。但是由于结构的广泛使用,我仍然很难找到最合适的集合。我的主要目标是关于最佳数据结构设计的要素。对不起,如果我不清楚。
【问题讨论】:
标签: java arraylist data-structures hashmap hashset