回答
ArrayList
是一個很好的通用List
和通常會出執行Array
或LinkedList
。這是在時間複雜度擊穿(V
的類型,i
是索引):
Type | add(V) | remove(V) | get(i) |
-------------------------------------------
Array | O(n) | O(n) | O(1) |
ArrayList | O(1) | O(n) | O(1) |
LinkedList | O(1) | O(1) | O(n) |
一般來說,你可以使用此規則:
陣:使用,如果你知道元素的確切數量並且不需要添加或移除元素。
列表:使用,如果你不知道元素的確切數量和需要添加或刪除元素。
StringBuilder
完全不同。 StringBuilder
是一個可變字符串。你可以把它想成List<Character>
。從這個意義上說,這可能不是你所需要的,所以將其與List<String>
或String[]
進行比較可能不是人爲的。
java 7之前的字符串文字列表將會消耗你的permgen區域,從而導致JVM崩潰。所以如果你有太多的字符串,最好去Stringbuilder。 Stringbuilder在內部使用char數組。但是,使用Stringbuilder來存儲String列表,您可能必須使用特殊字符進行分隔,然後使用split()來取回列表。
更好的選擇是去一個字符串數組。如前所述,即使Stringbuilder使用char數組。所以如果你確定你想存儲String列表,這將是不錯的選擇。但是,如果這是唯一的目標,我會說爲什麼不使用ArratList ...你不必擔心數組的大小。
- 字符串數組可用於指定數據大小時。 字符串數組 不可生長。
- 收集類用於當您的數據是可增長。這意味着,如果您的數組大小將動態變化或運行時變化,那麼您可以使用該數組。
- StringBuilder不用於存儲數據列表。它附加字符串數據,如字符串緩衝區。如果您 搜索字符串VS StringBuffer的字符串Vs的構建 之間的區別,你可以得到的想法
構建大型字符串時總是使用StringBuilder
。雖然速度差異不明顯,但這是最有效的。
我也聽說過Java在字符串上使用加號運算符時內部使用了構建器。雖然我不確定,但這是不太可能的。
String
是一個不可變的類,它不能被改變。 StringBuilder
是可以附加到的可變類,替換或刪除字符並最終轉換爲String
。
請注意,如果您使用Java 5或更新版本,則應使用StringBuilder
而不是StringBuffer
。從API文檔:
作爲釋放JDK 5的,這類已補充了由單個線程,
StringBuilder
設計用於的等效類。StringBuilder
類通常應優先於此類使用,因爲它支持所有相同的操作,但速度更快,因爲它不執行同步。
對於More
- 1. 的StringBuilder VS列表字符串搜索一行行C#
- 2. 字符串生成器vs列表
- 3. 列表,字符串和vs模板
- 4. 字符串VS列表成員檢查
- 5. 字符串VS StringBuilder的對象
- 6. 傳遞由值(StringBuilder的字符串VS)
- 7. 字符串VS串
- 8. 將字符串列表拆分爲字符串列表列表
- 9. [R字符/字符串:「......」 VS「...」
- 10. 轉換的字符串列表,列出字符串列表的
- 11. Data.Text VS字符串
- 12. 列表字符串字符串
- 13. 字符串字符串列表
- 14. Python字符串列表到字符串
- 15. 字符串列表
- 16. 字符串的valueOf VS空字符串
- 17. std ::字符串vs字符串
- 18. 字符串VS [字符串]在VB.Net
- 19. 用字符串列表替換字符串列表中的字符串
- 20. 數據庫:字符串Json vs新列
- 21. 字符串vs符號rails
- 22. 無法處理字符串列表中的字符串列表
- 23. Python列表中的字符串列表中的子字符串
- 24. 從字符串列表到字符串中的接口列表
- 25. 比較列表字符串字符串列表
- 26. 如何使列表[字符串]爲字符串列表
- 27. 將字符串列表轉換爲字符串列表
- 28. 字符串轉換列表分爲地圖[字符串,列表]
- 29. 字符串連接vs字符串生成器。性能
- 30. Scala - 字符串到方形字符串的列表字符串
性能明智的陣列是好的。但是列表提供了陣列無法提供的高級功能。 –
定義「性能」。空間,速度,可靠性?我們在談論多少條絃樂? – user949300
您可以檢查此鏈接 http://stackoverflow.com/questions/13639712/what-efficient-java-collection-would-be-used-to-store-a-million-strings –