2012-10-15 17 views
0

晚上好。訂購HashMap

我需要組織一個HashMap和它是這樣的:

私人的HashMap <字符串,矢量<任務>> tasksOrdered =新的HashMap <字符串,矢量<任務>>();

每個 「任務」 是具有3個屬性的取得類:

  • 人姓名;
  • 小時;
  • 紀律;

我知道,通過該HashMap,我可以將任務按小時分組爲幾個向量,只需將任務小時設置爲關鍵字,然後添加這些向量,或者存在已有向量的實例。

我的問題是,我該如何命令這些載體的名字?

的我想要的一個例子:

[1]:表https://dl.dropbox.com/u/4134140/Untitled.png

希望它能幫助:S

回答

3

您可以通過人的名字這樣的命令:

SortedMap<String, List<Task>> taskMap = new ConcurrentSkipListMap<String, List<Task>>(); 
taskMap.put(task.getPerson().getName(), task); 
+0

LinkedHashMap只是使用插入順序(或者如果使用該構造函數,那麼訪問順序)? –

+0

確實夠了,我會編輯的 – duffymo

+0

另外,你建議使用Task作爲鍵,但它是你的例子中的值。同意你的代碼Map >(但你的回答並不反映這一點),但也許可以使用TreeMap按名稱排序? –

0

HashMap不會給你任何排序。但是,我不確定您是否真的對排序感興趣?

看起來你想要根據名稱對任務進行分組嗎?你可以通過在hashmap中插入人名來獲取矢量。如果您想按名稱檢索它們,則可以抓取keyset(),請撥打java.util.Collections.sort(),然後按順序檢索矢量。

+0

這個想法是對第一個集合「i」和>>>>的鍵進行排序,在<< i>集合的每個值的<<<<中,通過它們的鍵排列集合也 – Sammy

+0

我已經選擇瞭解決方案更適合我的問題。檢查Duffy提示:)。但是,我想感謝您的支持! :)。 – Sammy

0

主要任務=和價值=的人名

Collections.sort(矢量,新的比較(){

 @Override 
     public int compare(Vector o1, Vector o2) { 
      return Collator.getInstance().compare(o1.getvalue(), o2.getValue()); 
     } 
    }); 

只是僞,可能需要扭捏了一下。

+0

我已經選擇了更適合我的問題的解決方案。檢查Duffy提示:)。但是,我想感謝您的支持! :)。 – Sammy