我有以下用例:java的列表實現
- 含有具有各種特性的對象的列表 - 例如名稱,類型,日期
- 列表可以包含大量的元件(50K - 200K)
我要問什麼會是鑑於我需要做的列表,如
-
上操作這種情況下,最好的列表實現3210
- 訂單 - 例如按類型(按字母順序)
- 過濾 - 例如按日期
- 無插入
- 子列表 - 類似於分頁。
謝謝。
我有以下用例:java的列表實現
我要問什麼會是鑑於我需要做的列表,如
謝謝。
如果您事先知道列表(或上限)的大小並且可以保證沒有插入,那麼您需要使用ArrayList。
它由數組備份,所以查找速度很快。
java.util.ArrayList
在這種情況下似乎最好(由矢量備份)。您需要事先做好的一件事是在構建實例時保留足夠的空間(最好是知道前面元素的數量),以避免在調整大小的向量分配上進行復制。
與LinkedList
相比,另一個勝利是缺少節點間引用,與ArrayList
相比,所需的堆大小減少了大約兩倍。
單個集合類型不能滿足所有這些用例。我能看到的最近的是TreeSet。
對象具有各種特性,即意味着不相關的對象類,或共享相同超類的類的對象?或者你的意思是具有不同價值屬性的對象?更具體.. – JMelnik 2012-02-20 21:37:31
線程安全呢?有多少個線程會填充它? – 2012-02-20 21:38:33
@SergeyBenner通常是一個,因爲它說'沒有插入'。 – 2012-02-20 21:40:34