ArrayList和LinkedList区别及使用场景_arraylist和linkedlist的使用_sherry_Rui的博客-程序员宅基地

技术标签: linkedlist  java  arraylist  

1、ArrayList是基于数组实现的,其构造函数为:

private transient Object[] elementData;
private int size;

ArryList初始化时,elementData数组大小默认为10;

每次add()时,先调用ensureCapacity()保证数组不会溢出,如果此时已满,会扩展为数组length的1.5倍+1,然后用array.copy的方法,将原数组拷贝到新的数组中;

ArrayList线程不安全,Vector方法是同步的,线程安全;


2、LinkedList是基于双链表实现的:

Object element;
Entry next,
          previous;
初始化时,有个header Entry,值为null;

使用header的优点是:在任何一个条目(包括第一个和最后一个)都有一个前置条目和一个后置条目,因此在LinkedList对象的开始或者末尾进行插入操作没有特殊的地方;


使用场景:

(1)如果应用程序对各个索引位置的元素进行大量的存取或删除操作,ArrayList对象要远优于LinkedList对象;

  ( 2 ) 如果应用程序主要是对列表进行循环,并且循环时候进行插入或者删除操作,LinkedList对象要远优于ArrayList对象;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Sherry_Rui/article/details/51068247

智能推荐

Apache Flink 零基础入门(二):开发环境搭建和应用的配置、部署及运行-程序员宅基地

一、准备工作Flink是一个以Java及Scala作为开发语言的开源大数据项目,代码开源在GitHub上,并使用Maven来编译和构建项目。对于大部分使用Flink的同学来说,Java,Maven和Git这三个工具是必不可少的。工具注释JavaJava 版本至少是 Java 8,且最好选用 Java 8u51 及以上版本Maven必须使用 Maven 3,建议使用...

PDCCH学习-程序员宅基地

一、PDCCH格式PDCCH (Physical Downlink Control Channel)是用来为下行链路发送信息的(DCI, Downlink Control Information) ,其传输的信息包括公共控制信息(系统信息,paging信息等)和用户专属信息(下行资源分配指示,UL grants, PRACH responses,上行功率控制参数等)。LTE系统下行_pdcch

作为移动开发你不能不了解的编译流程_京东云开发者的博客-程序员宅基地

阅读本文,或许能够了解关于以下的几个问题: 1、编译器是什么?为什么会有编译器这样一个东西? 2、编译器做了哪些工作?整个编译过程又是什么? 3、Apple的编译器发展历程以及为什么会抛弃GCC换成自研的LLVM? 4、从编译器角度看Swift与OC能够实现混编的底层逻辑

appium---第一个脚本--启动一个已存在的app-程序员宅基地

1、可以使用android-sdk中的aapt工具①、选择一个版本的build_tools,加入path环境变量中②、验证aapt环境是否正常3、下载你要测试的包到本地,放入某一地址中(随意):aapt dump badging D:\Users\4admin\Desktop\jianshu_xpgod.apk(包的位置)然后就可以获得包的所有信息,...

3.AVPacket使用_av_packet_ref-程序员宅基地

1.使用注意 AVPacket需要用户通过av_packet_allc()创建好空间后.才能供给fimpeg进行获取解码前帧数据,由于解码前帧数据大小是不固定的(比如I帧数据量最大)所以ffmpeg会在AVPacket的成员里动态进行创建空间. 并且我们每一次使用完AVPacket后(再次调用av_read_frame()读取新帧之前),必须要通过av_packet_unref(..._av_packet_ref

PYNQ初体验--AXI_GPIO实验_pynq fpga 控制gpio速度-程序员宅基地

目录PYNQ简介PYNQ是什么jupyter notebookPYNQ的学习资料如何使用PYNQ?PYNQ上跑的一个AXI_GPIO小例程PYNQ简介PYNQ是什么PYNQ是一个新的开源框架,使嵌入式编程人员能够在无需设计可编程逻辑 电路的情况下即可充分发挥 Xilinx Zynq All Programmable SoC(APSoC)的功能。 与常规方式不同的是,通过 PYNQ,用户可以使用 Python 进行 APSoC编程,并且 代码可直接在支持 PYNQ 的开发板上进行开发和测试。通过 PY_pynq fpga 控制gpio速度

随便推点

DDOS攻击防护HTTP篇-程序员宅基地

HTTP GET FloodHTTP GET Flood攻击的原理很简单,攻击者利用攻击工具或者操纵僵尸主机,向目标服务器发起大量的HTTP GET报文,请求服务器上涉及数据库操作的URI或其它消耗系统资源的URI,造成服务器资源耗尽,无法响应正常请求。302重定向302重定向认证的原理是Anti-DDoS系统代替服务器向客户端响应302状态码(针对GET请求方法的重定向),告知客户端...

Spire.XLS 教程:在Excel中合并单元格-程序员宅基地

Spire.XLS 是一个专业的Excel控件,有 .NET、WPF和Silverlight 版本,通过Spire.XLS无需安装微软Excel,也能拥有Excel的全套功能,本文介绍了如何在Spire.XLS 在Excel中合并单元格。

Linux-Kconfig总结与分析_defconfig内 =y-程序员宅基地

使用Kconfig时,需要注意的地方1.在Kconfig中定义的配置宏,前缀都没有"CONFIG_",只有编译内核时,自动生成autoconf.h才会出现前缀.2.如果XX_defconfig板卡配置文件中定义新的宏=y时,而在Kconfig并没有声明它,则内核编译出来的autoconf.h里也不会定义它的.3.如果XX_defconfig板卡配置文件中没有设置CONFIG_MO..._defconfig内 =y

正则表达式的符号概念、捕获组与非捕获组、解读方式、练习网站_华天下之大软的博客-程序员宅基地

正则表达式正则表达式的解读方法符号概念练习的网站看两个现象进行后续思考Group的用途捕获组和非捕获组 [整理自该链接](https://www.jianshu.com/p/2547f0e3e809)捕获组每个捕获组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。非捕获组组的命名正则表达式的解读方法读者最好能养成按照字符来理解正则表达式的习惯。(参考自动物书《精通正则表达式》,这种读法对我来说更好理解,且更容易举一反三)错误解读方式:「^c

leetcode 735. 行星碰撞_leetcode 行星碰撞 [-2,-2,-1,-2]-程序员宅基地

题目链接 https://leetcode-cn.com/problems/asteroid-collision/comments/ 题目描述 给定一个整数数组 asteroids,表示在同一行的行星。 对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。 找出碰撞后剩下的所有..._leetcode 行星碰撞 [-2,-2,-1,-2]

我的世界服务器精灵模型文件在哪,教你在租赁服里加入小地图、合成表、物品一键整理...-程序员宅基地

官方对租赁服进行了多次更新,然而依旧不能在租赁服正常添加MOD。过度纯净会让大部分玩家玩起来相当不舒服。好在我发现官方的精灵小助手MOD是能加载的,虽然租赁服里不能有小精灵的陪伴,但是此MOD附带的小地图、合成表、一键整理的功能还是能给我们在租赁服带来相当多的便利的。1.jpg (214.17 KB, 下载次数: 37)2017-9-1 17:26 上传2.png (782.64 KB, 下载次数...