zoukankan      html  css  js  c++  java
  • 数组和链表

    数组(ArrayList)由于是紧凑连续存储,可以随机访问,通过索引快速找到对应元素,⽽且相对节约存储空间。但正因为连续存储,内存空间必须⼀次性分配够,
    所以说数组如果要扩容,需要重新分配⼀块更⼤的空间,再把数据全部复制过去,时间复杂度 O(N);⽽且你如果想在数组中间进⾏插⼊和删除,
    每次必须搬移后⾯的所有数据以保持连续,时间复杂度 O(N)。
    优点:随机查询快、在尾部添加比链表快
    缺点:随机插入、删除相比链表慢
     
    链表(LinkedList)因为元素不连续,⽽是靠指针指向下⼀个元素的位置,所以不存在数组的扩容问题;如果知道某⼀元素的前驱和后驱,操作指针即可删除该元素
    或者插⼊新元素,时间复杂度 O(1)。但是正因为存储空间不连续,你⽆法根据⼀个索引算出对应元素的地址,所以不能随机访问;⽽且由于每个元素
    必须存储指向前后元素位置的指针,会消耗相对更多的储存空间。
    优点:随机插入、删除快  比数组
    缺点:查询慢 相比数组
     
    相同点:两者都是线性表。而且是线程不安全的。Vector 向量 线程安全。 Vector 也是基于数组实现的。
     
     
     
     
    不忘初心,相信自己,坚持下去,付诸实施。
  • 相关阅读:
    Fragment学习简介与生命周期研究
    POJ 2513 Colored Sticks 【Trie树】
    listView实时更新
    苹果技术支持联系方式
    文件中随机读取行问题
    hdu 4554
    hdu 4556
    离开通讯后就职互联网行业的一些感悟
    HDU1016:Prime Ring Problem
    dbgrideh通用打印
  • 原文地址:https://www.cnblogs.com/controller666/p/14513901.html
Copyright © 2011-2022 走看看