回答
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 –