2012-08-29 64 views
0

我有一張地圖,我希望有一些值可以在最上面。根據用戶定義的標準對地圖進行排序?

HashMap<String,String> hm = new HashMap<String,String>(); 
hm.put("Phone Number","998291829"); 
hm.put("Address","12 A Street"); 
hm.put("Name","Robert Singh"); 
hm.put("Email","[email protected]"); 
- 
- 

我想要名稱和電子郵件作爲第一和第二項,我該怎麼做。

+0

您是否希望將項目按插入方式排序? –

+0

我明白他希望他們按特定的順序。 –

+0

沒有實際的值和密鑰來自caouchdb,我必須使用這張地圖在u.i上顯示。其中關鍵是標籤,值是標籤旁邊的值。 – vikas27

回答

0

而不是使用HashMap,您應該使用LinkedHashMap,因爲它保留了添加元素的順序。您將不得不按照需要的順序添加元素。

0

您可以使用樹形圖。構造函數接受一個比較器。

您可以傳遞您自己的比較器實現,您可以在其中實現在地圖中對數據進行排序的邏輯。

2

HashMap不是一個排序或排序的集合。

你可以做的是使用TreeMap和你自己的比較器。

但是,我懷疑你最好使用真實的類而不是專門的Map。

+0

我不會爲性能原因建議使用treemap。對於這種情況,與自定義格子相關的哈希映射是可以的。 – Nomad

+0

LinkedHashMap不採用自定義比較器或自定義哈希函數。 –

-1

根據您的使用情況,您可能需要使用一個List<Pair>,其中一對是一樣的東西

public class Pair<J,K> { 
    private J key; 
    private K value; 

    public Pair(J key, K value) { 
     this.key = key; 
     this.value = value; 
    } 

    public J getKey() {return key;} 
    public K getValue() {return value;} 
} 
+0

這應該如何幫助當前問題中的OP?如果有人需要使用快速且良好的get方法,使用這個列表將變得毫無用處。 –

0

我會建議您如創建一個bean聯繫人或個人,然後爲此寫比較。

所以一旦你完成創建bean和比較器。然後

填充豆

列表/集合和最後做

Collection.sort(yourlist,sortByNameComparator);

Collection.sort(yourlist,sortByemailComparator);

其中,sortByNameComparator和sortByemailComparator是您創建的比較器。

看看這個。它一定會解決你的問題。

Sorting an ArrayList of Contacts based on name?

上面具有例如,創建比較器。

相關問題