[英]Which collection should be used in this scenario?
任何人都可以建議我在這種情況下使用哪個集合:
每位學生都有一份付款記錄,其中包含學生/家庭的付款詳情。 系統應確保沒有針對學生帳戶的重復付款。 該計划應該能夠為學生添加付款詳細信息,並確保沒有注冊重復的付款細節。
也許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.");
}
每當您要求不重復時,請使用Set
。 如果您使用HashSet
,請確保在您放入集合中的Objects
上實現hashCode
(以及equals
)。
您可能會發現學生地圖對一組付款有幫助
Map<Student, Set<Payment>> studenthistory;
你可以考慮例如
Map<Student, HashSet<Payment>> students;
Student
是學生,通過姓名或某些身份證明。 HashSet<Payment>
是付款。 Payment
包含ID,金額,日期等。
套裝將是您的最佳選擇。 集合是不包含重復元素的集合。
請記住在您的班級上覆蓋equals-method: http : //www.javapractices.com/topic/TopicAction.do?Id = 17
在你的情況下,它將是這樣的:
public boolean equals(Object obj) {
if (!obj instanceof Payment)
return false;
}
Payment p = (Payment) o;
return p.getId().equals(getId());
}
.... 或類似的東西 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.