2012-11-01 22 views
1

Java中除鏈表之外是否有任何無界列表? 我必須將BLOB對象存儲在列表中。我目前使用arrayList,但我擔心列表大小增長時,ArrayList可能無法存儲(可能達到最大容量)。 我想過使用鏈表,但它看起來效率不高。java中的無界列表

+2

ArrayList有什麼問題?我沒有在[它的文檔](http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html)中看到它有任何大小限制。 (如果您擔心列表的「容量」,則會在添加新元素時自動增加。) – Wyzard

+2

除非您有超過2^31 + 1個對象,否則ArrayList或LinkedList將會很好。無論如何,你都會遇到極大的內存負載。 – Vulcan

+0

你可以在這裏參考這個相似的答案。 http://stackoverflow.com/questions/3767979/how-many-data-a-list-can-hold-at-the-maximum – user1500049

回答

6

ArrayList沒有任何大小限制 - 它會擴大,以適應您添加到它的元素。

ArrayList可能在技術上限制爲2^31-1的值 - 或大約20億個元素 - 但是您將首先用完RAM。

+0

*「...但你會先用完RAM」* - 或者你的應用程序將停止處理在可怕列表上進行'O(N)'操作:-) –

+0

這是真的......但它仍然會比'LinkedList'要快,所以呃。 –

+0

我不同意你的觀點。我正在強化它......通過指出爲什麼怪異列表根本不起作用的另一個原因。 –

0

當 列表的大小增加時,arraylist可能無法存儲(其大小限制)。

什麼尺寸的限制?

List<Blob> blobs = new ArrayList<Blob>(); 

你只能通過你的內存可以分配給JVM或者,作爲yshavit正確地指出的下方,該指數最大整數值的限制。

+1

那麼,從技術上講,你受到'Integer.MAX_VALUE'(2^31-1)的限制,因爲這是最大的數組。但這不會成爲你實踐中的限制因素。 – yshavit

0

請注意,Java中有幾十個Collection實現,完全取決於您的需求。例如,ArrayList沒有有效的大小限制,因此在達到最大大小之前您將遇到OutOfMemoryError。 結帳Collections page才決定。