zoukankan      html  css  js  c++  java
  • 【刷题】数组与链表 & ArrayList和LinkedList Array和ArrayList

    数组与链表

    • 数据中数组的内存是顺序存储的,而链表是随机存取的。

    • 数组随机访问效率很高,但插入删除操作的效率比较低。

    • 链表在插入删除操作上相对数组有很高的效率,而如果访问链表中的某个元素,那就要从表头逐个遍历,直到找到所需要的元素为止,所以链表的随机访问效率比数组低。

    • 链表不存在越界问题,数组有越界问题。

    • 数组节省空间但是长度固定。链表虽然变长,但是占了更多的存储空间。

    • 静态)数组从栈中分配内存空间,对于程序员方便快速,但是自由度小。链表从堆中分配空间,自由度大,但申请管理比较麻烦。

    ArrayList和LinkedList

    • ArrayList和LinkedList都实现了List接口,他们有以下的不同点:

    • ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。与此对应,LinkedList是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。

    • 相对于ArrayList,LinkedList的插入,添加,删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。

    • LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。

    Array和ArrayList的不同点:

    • Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。
    • Array大小是固定的,ArrayList的大小是动态变化的。
    • ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
    • 对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。

    END

  • 相关阅读:
    Liferay 6.2 改造系列之一:源码编译和服务启动
    安装Maven、Eclipse设置、添加地址JAR
    HTTP状态码查询
    Android Manifest 权限描述大全
    Bootstrap Table 表格参数详解
    Maven项目在Eclipse中调试 Debug
    J2EE中使用jstl报http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar错
    在Eclipse中导入SVN库里的Maven项目
    手机最后一位居然代表你的婚姻爱情
    老九门1-48(全集)
  • 原文地址:https://www.cnblogs.com/anliux/p/12564692.html
Copyright © 2011-2022 走看看