(大約有時效性的稀疏矩陣的一些問題,但我正在尋找存儲效率。)內存效率稀疏數組中的Java
我需要一個List<T>
相當於或Map<Integer,T>
這
- 只需設置大於以前遇到的任何一個密鑰,就可以按需增長。 (可以假設鍵爲非負。)
- 大約是內存效率作爲
ArrayList<T>
中,大部分的指數不null
的情況下,即,當實際數據不是很稀疏。 - 當索引稀疏時,消耗的空間與非索引的數量成正比。
- 使用比
HashMap<Integer,T>
更少的內存(因爲這autoboxes鍵和可能不利用Scalar密鑰類型)。 - 可以獲得或設置一個元素在分期付款日誌(N)時間,其中N是條目數量:不需要是線性時間,二進制搜索是可以接受的。
- 在非開源的純Java庫(最好在Maven Central中)實現。
有誰知道這樣一個工具類的?
我本來期望Commons Collections中有一個,但它似乎沒有。
我碰到了org.apache.commons.math.util.OpenIntToFieldHashMap
這看起來幾乎是正確的,除了值類型是FieldElement
這似乎是無償的;我只想要T extends Object
。它看起來很容易將其源代碼編輯爲更通用,但我寧願使用二進制依賴關係(如果有)。
看起來不錯。我嘗試將'OpenIntToFieldHashMap'修改爲一個通用的值類型,這似乎適用於〜10分鐘的工作,但它只比'TIntObjectMap'稍微好一些。 –