我需要一個快速插入,快速檢索和可以按順序返回的數據結構。這聽起來像一個樹形圖,但我需要的元素順序是基於創建時間而不是我存儲的鍵的順序。Java TreeMap的替代
換句話說,我仍然希望能夠根據一個鍵(這是一個字符串)插入和檢索,但是我想按照創建時間(這是一個日期)的順序返回項目。當然,我希望它儘可能快,而不必創建自己的數據類型。
樹形圖在這種情況下不起作用,因爲它使用鍵來插入並檢索AND來排序結果。是否有另一種標準數據類型可以滿足我的要求?
我需要一個快速插入,快速檢索和可以按順序返回的數據結構。這聽起來像一個樹形圖,但我需要的元素順序是基於創建時間而不是我存儲的鍵的順序。Java TreeMap的替代
換句話說,我仍然希望能夠根據一個鍵(這是一個字符串)插入和檢索,但是我想按照創建時間(這是一個日期)的順序返回項目。當然,我希望它儘可能快,而不必創建自己的數據類型。
樹形圖在這種情況下不起作用,因爲它使用鍵來插入並檢索AND來排序結果。是否有另一種標準數據類型可以滿足我的要求?
聽起來像是你想要一個LinkedHashMap。
使用Map和TreeSet?
單個地圖<字符串,對象>只是爲了存儲鍵/值對。它不一定是一個TreeMap。因爲你沒有使用該地圖進行排序。
TreeSet <對象>用於其排序。
您總是可以將2個集合實例包裝在您自己創建的一個包裝器Map類中。如果你真的需要它看起來像一個地圖。確保您選擇的比較器使用創建日期。
其他人建議LinkedHashMap。但我不認爲你想保持「插入順序」。但是,你希望它通過某種類型的比較器(可能是Object.equals)進行排序。
如果我正確理解您的問題,您可以創建自己的Comparator
並使用public TreeMap(Comparator<? super K> comparator)
構造函數。
構造函數只接受一個只有鍵的類型的比較器。創建時間是價值對象的一部分而不是關鍵,所以它不起作用。 – 2011-03-20 04:36:03
爲什麼不通過實現'Comparable'來實現'compareTo'方法以考慮日期,然後使用常規的'TreeMap'實現? – adarshr 2011-03-18 20:05:59
也許我誤解了你的評論,但樹圖的構造函數需要一個Comparable類型的鍵不是值(我的創建時間在值對象中) – 2011-03-19 03:19:44