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/

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

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

  • 相关阅读:
    Matplotlib
    【源码解读】EOS测试插件:txn_test_gen_plugin.cpp
    EOS多节点组网:商业场景分析以及节点启动时序
    EOS商业落地利器:多签名操作与应用
    EOS技术研究:合约与数据库交互
    【精解】EOS标准货币体系与源码实现分析
    【精解】EOS智能合约演练
    Efficient&Elegant:Java程序员入门Cpp
    区块链3.0:拥抱EOS
    以太坊挖矿源码:clique算法
  • 原文地址:https://www.cnblogs.com/haifeiWu/p/9079597.html
Copyright © 2011-2022 走看看