List 性能问题
来源:互联网 发布:软件测试课程设计题目 编辑:程序博客网 时间:2024/06/10 15:49
http://www.cn-java.com/www1/?action-viewnews-itemid-100203
ArrayList
ArrayList允许所有元素包括null。ArrayList没有同步
理解一:ArrayList 使用一个内置的数组来存储元素,这个数组的起始容量是10.当数组需要增长时,新的容量按如下公式获得:新容量=(旧容量*3)/2+1,也就是说每一次容量大概会增长50%。这就意味着,如果你有一个包含大量元素的ArrayList对象,那么最终将有很大的空间会被浪费掉,这个浪费是由 ArrayList的工作方式本身造成的。如果没有足够的空间来存放新的元素,数组将不得不被重新进行分配以便能够增加新的元素。对数组进行重新分配,将会导致性能急剧下降。如果我们知道一个ArrayList将会有多少个元素,我们可以通过构造方法来指定容量。我们还可以通过trimToSize方法在 ArrayList分配完毕之后去掉浪费掉的空间(把没有赋值的元素去掉)。
理解二:ArrayList是用数组实现的,它不是真正的链表,在初始化的时候它先对数组设置一个初始容量,当数组空间不够的时候,它会重新构建一个容量更大的数组,然后把先前的元素拷贝进去
不管是一还是二暂且不管他存放元素的方式。唯一一点可以确认他使用内置的数组
注意:List接口没有trimToSize方法. 虽然新容量没有赋值, 但是还是会占用内存, 如果ArrayList的数据比较多, trimToSize方法是有必要调用的.
LinkedList
List接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列 (deque)。此类实现 Queue 接口,为 add、poll 等提供先进先出队列操作。其他堆栈和双端队列操作可以根据标准列表操作方便地进行再次强制转换。虽然它们可能比等效列表操作运行稍快,但是将其包括在这里主要是出于方便考虑
- List 性能问题
- Dictionary到List转换中的性能问题
- C# List<T>.Contains性能问题
- List.RemoveAll和List.FindAll结合产生的性能问题之后...
- python -- list 性能测试
- android性能之List
- 高性能的LIST
- Java List性能优化
- list问题
- STL里list、vector、queue性能差异与疑似内存泄漏问题
- 利用redis的list队列解决类似微博中msgbox表的性能问题
- 性能问题
- 性能问题
- 性能问题
- 性能问题
- 性能问题
- ArrayList Array List性能比较
- HashSet 、 Dictionary 、List性能对比
- GetManifestResourceStream的使用
- CSS 压缩在线工具
- real,user and sys 进程时间统计
- C# 嵌入式资源
- 六大设计原则[笔记]
- List 性能问题
- ExtJS 折叠模板
- 青春中国
- 如何在C#中使用内嵌资源文件(转载学习)
- Android 之对话框 2
- How I explained Design Patterns to my wife: Part 1
- Write 的奥秘
- 免费Web服务
- [代码] - Zend Framework 上传文件重命名,Php程序。