2015-05-06 35 views
0

我需要創建3個數據結構。ArrayList vs HashSet vs HashMap以及有關數據結構設計的問題

首先是人(PersonRegister)的集合:

public Person { 
    private final int uniquePersonId; // Unique identifier 
    private long personalNumber; 
    private String name; 
    // additional code 
} 

第二種是保險(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 
} 

每個對象都有overriden equals()和hashCode()方法。該數據結構的

無需要任何的去除,因爲舊的數據將用於統計等

同樣重要的是,數據結構不包含重複。將這些數據結構使用

方法例如:

  • 查找特定PERSONID的保險/索賠。
  • 查找在給定時間內提交的所有索賠/保險。
  • 查找基於PERSONID或personalNumber
  • 一個人找到與特定的lastName
  • 所有人查找所有活動保險到一個特定的人。
  • 查找特定的子類類型的所有保險/索賠(例如CarInsurance或HomeInsurance,都是sublcasses到保險)

這樣的例子不勝枚舉,直到你把它命名。任何符合綜合統計和搜索功能的數據。

很多這些方法將使用先進的for循環與迭代器。

現在看來,通過比較uniquePersonId變量,將Person連接到其保險的唯一方法是 。是否 更好,也讓每個人擁有一個清單,其對象參照 它的保險和索賠?

此外,每個保險/索賠都有其對象參照 父母/所有者嗎?還是這被認爲是不好的做法,由「關注分離 」?

它會使諸如確定布爾型totalCustomer(True,如果您有 多於3個活動保險)等方法更容易放置在Person 類中。有什麼建議麼?

無論如何,主要問題。什麼樣的Collections最適合每種數據結構?(限於Java集合)

目前/暫時我有3個ArrayList與一個if(!list.contains(newElement)){add(newElement)};以防止重複。

迭代通過for循環時ArrayList是否比HashSet或HashMap更快?但是它有足夠快的價值嗎?

我一直在考慮HashSet會是一個更好的實踐,考慮到不允許重複,或者我的「複製解決方案」夠好嗎?對於考慮uniquePersonId的人來說,HashMap可能是有意義的,因爲每次搜索保險或索賠時都會使用uniquePersonId。

但是我仍然希望搜索personalNumber或任何其他人的功能,爲此事。像這樣迭代Iterate through a HashMap仍然是有效的,併爲良好的編程設計?

我花了無數小時在stackoverflow和谷歌試圖弄清楚。任何建議和幫助將非常感激。謝謝。

編輯:Difference between HashSet and HashMap?被鏈接爲可能的重複問題,但該線程只解釋了HashSet和HashMap之間的區別,並鏈接到了Oracles Collection教程。我知道大部分的差異。我也讀過Collection教程。但由於結構的廣泛使用,我仍然遇到一些難以找到最合適的收藏。我的主要目標是考慮最佳的數據結構設計。對不起,如果我不清楚。

+0

[HashSet和HashMap之間的區別?]的可能的重複(http://stackoverflow.com/questions/2773824/difference-between-hashset-and-hashmap) –

回答

0

我建議使用HashSet來存儲各種對象的列表。也讓你的對象(人等)實現Comparable,這樣你可以重寫compareTo方法並用它來排序你的HashSet。當涉及到排序時,您可以簡單地使用Collections.sort()方法,該方法也可以使用Comparator進行自定義排序。