2011-03-18 73 views
0

我需要一個快速插入,快速檢索和可以按順序返回的數據結構。這聽起來像一個樹形圖,但我需要的元素順序是基於創建時間而不是我存儲的鍵的順序。Java TreeMap的替代

換句話說,我仍然希望能夠根據一個鍵(這是一個字符串)插入和檢索,但是我想按照創建時間(這是一個日期)的順序返回項目。當然,我希望它儘可能快,而不必創建自己的數據類型。

樹形圖在這種情況下不起作用,因爲它使用鍵來插入並檢索AND來排序結果。是否有另一種標準數據類型可以滿足我的要求?

+3

爲什麼不通過實現'Comparable'來實現'compareTo'方法以考慮日期,然後使用常規的'TreeMap'實現? – adarshr 2011-03-18 20:05:59

+0

也許我誤解了你的評論,但樹圖的構造函數需要一個Comparable類型的鍵不是值(我的創建時間在值對象中) – 2011-03-19 03:19:44

回答

1

使用Map和TreeSet?

單個地圖<字符串,對象>只是爲了存儲鍵/值對。它不一定是一個TreeMap。因爲你沒有使用該地圖進行排序。

TreeSet <對象>用於其排序。

您總是可以將2個集合實例包裝在您自己創建的一個包裝器Map類中。如果你真的需要它看起來像一個地圖。確保您選擇的比較器使用創建日期。

其他人建議LinkedHashMap。但我不認爲你想保持「插入順序」。但是,你希望它通過某種類型的比較器(可能是Object.equals)進行排序。

0

如果我正確理解您的問題,您可以創建自己的Comparator並使用public TreeMap(Comparator<? super K> comparator)構造函數。

+0

構造函數只接受一個只有鍵的類型的比較器。創建時間是價值對象的一部分而不是關鍵,所以它不起作用。 – 2011-03-20 04:36:03