2013-05-09 59 views
0

我想添加到收藏下面對哪些集合適用於Java中的電話號碼+名稱對?

698xxxxxxx - PERSONA

698xxxxxxx - personB

699xxxxxxx - PERSONA

699xxxxxxx - personB

我通過很多文件,並嘗試添加我在那裏找到的對的集合。我希望能夠有一個表格顯示每個數字以及與之相關的人物,而不用使用共享對。例如

1-人物確定

1- personB OK

2-人物確定

3- personB OK

3- personB NOT OK作爲其已經存在

我試過使用Multimap,但我不知道如果它的正確的選擇。無論解決方案是什麼,請告訴我如何通過它的價值觀以及我可以使用對。對於高要求的文章感到抱歉,但我對Java新的和我發現一個難以理解的API。

在此先感謝

+0

Consuder uing一個HashMap 。但想想你的獨特的關鍵,電話+人,或電話。 – AlexWien 2013-05-09 11:05:42

回答

0

您可能需要一個HashMap與密鑰作爲個人和值號碼的一個HashSet的名稱。哈希集不允許重複,因此重複的數字將不會被存儲在那裏。這裏是代碼:

HashMap<String,HashSet> Records; 
2

有三個明顯的選擇,取決於你需要什麼。

  • 如果每個電話號碼只能有一個人,那麼簡單的Map<PhoneNo, Name>

  • 如果給定的電話號碼可以與多個人關聯,則可以是Map<Phone,Set<Name>>或多地圖類。

  • 如果你還想找出每個人的電話號碼或號碼,你需要兩張地圖或兩張多地圖...或雙向地圖。

您需要做的第二選擇是:散列表與基於樹的組織。散列表會給你O(1)查找/插入/刪除(假設散列函數是好的)。基於樹的實現提供O(logN)操作...但它也允許您按鍵順序遍歷條目(或值)。

雖然標準Java類庫不提供多圖或雙向映射,但它們可以通過組合簡單的集合類輕鬆實現。

0

在Java中有幾個選項。如果你不知道的人或數字的基數,然後去:

public class Pair { 
    String person; 
    String number; 
    } 

然後用設置爲從doublettes拯救像

Set<Pair> pairs = new HashSet<>(); 
.... 
pairs.add(new Pair("689xxxx", "personA"); 
for (Pair pair : pairs) { 
    System.out.println(pair.number + " - " + pair.person); 
} 

哈喬

相關問題