2016-01-20 76 views
-1

在我的Java應用程序部署在Tomcat中,約500K的項目(可以去甚至向上)是 添加到ArrayList中。 然後,這些列表被重複檢查一些條件。性能 - 數據量 - ArrayList中<String>,列表<Object> VS LinkedList的<String>,LinkedList的<Object>

Que-對於這種情況,會使用LinkedList獲得性能嗎?

從實際經驗的任何指針的數據量超過20萬項〜100萬項。

大多具有多個屬性大多是串 (基本上從數據庫獲取數據,將其轉換爲Java對象,並通過HTTP發送過來) 如果數據的規模有望保持內100K以下,將字符串和對象的列表會有差異

+0

你的問題還不清楚:你問一個List(它是一個接口)和一個LinkedList(這是一個實現)之間的區別。 – Filip

+1

簡而言之:'ArrayList'上的常量因素非常好,'LinkedList'幾乎不是正確的答案。 –

+0

謝謝Louis。在發佈我的問題之前,我完全查看了其他問題。我不確定是否有人分享了我對感興趣的數據量的實際生產數據的經驗,因此也提出了問題。我想你不喜歡它,並決定downvote!如果這完全沒用,我可以解決這個問題。 – Rockoder

回答

0

見這樣的問題: When to use LinkedList over ArrayList?

鏈表允許使用 迭代器,但只有元件的順序訪問常數時間插入或移除。換句話說, 可以向前或向後移動列表,但在 列表中查找位置所花費的時間與列表大小成比例。

另一方面,ArrayList允許快速隨機讀取訪問,因此您可以在常量時間內抓取任何元素。但是,除了最終的地方之外,在任何地方添加或移除 都需要將所有後面的元素移位,以打開或填補缺口。另外,如果您添加的元素數多於底層數組的容量,則會分配一個新陣列(大小的1.5 倍),並將舊陣列複製到新陣列中,因此向ArrayList添加O(n )在最壞的情況下,但平均爲 。

+0

感謝您的回答。我正在尋找一些實際經驗來估計添加/檢索我提到的數據量所需的時間。我在我的代碼中估算了arraylist,但是在更新代碼之前,重新測試了所有內容,想到問這個問題。對於與此主題相關的其他問題的答案,有人提到如果不刪除/修改列表,鏈接列表可能會更快。這讓我感到震驚! – Rockoder

相關問題