zoukankan      html  css  js  c++  java
  • 集合框架总结

    集合框架总结

    ArrayList

    对于ArrayList,它的特点是:内部采用动态数组实现,这决定了:

    • 可以随机访问,按照索引位置进行访问效率很高,用算法描述中的术语,效率是O(1),简单说就是可以一步到位。
    • 除非数组已排序,否则按照内容查找元素效率比较低,具体是O(N),N为数组内容长度,也就是说,性能与数组长度成正比。
    • 添加元素的效率还可以,重新分配和拷贝数组的开销被平摊了,具体来说,添加N个元素的效率为O(N)。
    • 插入和删除元素的效率比较低,因为需要移动元素,具体为O(N)。

    LinkedList特点分析

    LinkedList内部是用双向链表实现的,维护了长度、头节点和尾节点,这决定了它有如下特点:

    • 按需分配空间,不需要预先分配很多空间
    • 不可以随机访问,按照索引位置访问效率比较低,必须从头或尾顺着链接找,效率为O(N/2)。
    • 不管列表是否已排序,只要是按照内容查找元素,效率都比较低,必须逐个比较,效率为O(N)。
    • 在两端添加、删除元素的效率很高,为O(1)。
    • 在中间插入、删除元素,要先定位,效率比较低,为O(N),但修改本身的效率很高,效率为O(1)。

    HashMap特点分析

    HashMap实现了Map接口,内部使用数组链表和哈希的方式进行实现,这决定了它有如下特点:

    • 根据键保存和获取值的效率都很高,为O(1),每个单向链表往往只有一个或少数几个节点,根据hash值就可以直接快速定位。
    • HashMap中的键值对没有顺序,因为hash值是随机的。

      如果经常需要根据键存取值,而且不要求顺序,那HashMap就是理想的选择。

    作者: haifeiWu

    出处: http://www.hchstudio.cn/

    关于作者:专注大后端,分布式,高并发等领域,请多多赐教!

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接

  • 相关阅读:
    UVA
    UVA
    模板——扩展欧几里得算法(求ax+by=gcd的解)
    UVA
    模板——2.2 素数筛选和合数分解
    模板——素数筛选
    Educational Codeforces Round 46 (Rated for Div. 2)
    Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses
    Educational Codeforces Round 46 (Rated for Div. 2) D. Yet Another Problem On a Subsequence
    Educational Codeforces Round 46 (Rated for Div. 2) C. Covered Points Count
  • 原文地址:https://www.cnblogs.com/haifeiWu/p/9079597.html
Copyright © 2011-2022 走看看