java常用集合性能比拼
2013-06-18 15:45
78 查看
Hash集合的性能比任何
List的性能都要高,但每条目的成本也要更高。由于访问性能方面的原因,如果您正在创建大集合(例如,用于实现缓存),那么最好使用基于
Hash的集合,而不必考虑额外的开销。
对于并不那么注重访问性能的较小集合而言,
List则是合理的选择。
ArrayList和
LinkedList集合的性能大体相同,但其内存占用完全不同:
ArrayList的每条目大小要比
LinkedList小得多,但它不是准确设置大小的。
List要使用的正确实现是
ArrayList还是
LinkedList取决于
List长度的可预测性。如果长度未知,那么正确的选择可能是
LinkedList,因为集合包含的空白空间更少。如果大小已知,那么
ArrayList的内存开销会更低一些。
选择正确的集合类型使您能够在集合性能与内存占用之间达到合理的平衡。除此之外,您可以通过正确调整集合大小来最大化填充率、最小化未得到利用的空间,从而最大限度地减少内存占用。
集合 | 性能 | 默认容量 | 空时的大小 | 10K 条目的开销 | 准确设置大小? | 扩展算法 |
---|---|---|---|---|---|---|
HashSet | O(1) | 16 | 144 | 360K | 否 | x2 |
HashMap | O(1) | 16 | 128 | 360K | 否 | x2 |
Hashtable | O(1) | 11 | 104 | 360K | 否 | x2+1 |
LinkedList | O(n) | 1 | 48 | 240K | 是 | +1 |
ArrayList | O(n) | 10 | 88 | 40K | 否 | x1.5 |
StringBuffer | O(1) | 16 | 72 | 24 | 否 | x2 |
相关文章推荐
- Java 中常用集合性能比较
- Java常用排序算法及性能测试集合
- Java常用排序算法及性能测试集合
- Java常用排序算法及性能测试集合
- Java常用排序算法及性能测试集合
- Java常用排序算法及性能测试集合
- java中Map集合的常用遍历方法及HashMap的应用实例
- java中常用的集合框架
- Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和性能分析)
- Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)
- JAVA常用集合要点总结
- java集合常用的工具类
- Java集合系列:-----------06List的总结(LinkedList,ArrayList等使用场景和性能分析)
- java集合list接口下的ArrayList,LinkedList的性能选择
- java三种实例对象方式性能比拼
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
- java 集合的常用操作(排序、查找、打乱顺序)
- JAVA常用知识点总结---集合篇
- Java笔记 - List集合常用子类
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)