• 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
  • 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
  • 3.对于在指定index位置新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
  • 4.ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOnWriteArrayList。LinkedList线程安全的处理方法

    方法一:List<String> list = Collections.synchronizedList(new LinkedList<String>());
    方法二:将LinkedList全部换成ConcurrentLinkedQueue

  • 为什么在创建ArrayList对象时要初始化默认容量?

   其实就是为了避免扩容,ArrayList扩容方法,这里 ensureCapacityInternal  才是ArrayList内部调用的扩容方法

/**
* 公有方法
*/
public void ensureCapacity(int minCapacity) {
int minExpand = (elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA)
// any size if not default element table
? 0
// larger than default for default empty table. It's already
// supposed to be at default size.
: DEFAULT_CAPACITY; if (minCapacity > minExpand) {
ensureExplicitCapacity(minCapacity);
}
} private void ensureCapacityInternal(int minCapacity) {
if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
} ensureExplicitCapacity(minCapacity);
} private void ensureExplicitCapacity(int minCapacity) {
modCount++;
// overflow-conscious code
if (minCapacity - elementData.length > 0)
grow(minCapacity);
}

扩容的大小为原容量的1.5倍+1(其实是>>1),该方法下有会改变
modCount的值
modCount变量用于在遍历集合(iterator())时,检测是否发生了add、remove操作。

boolean add(E e) ;//在尾部加入元素
void add(int index, E element) ;//在指定位置加入元素

因为调用arraycopy,所以效率低。(但是也没低到哪去 执行100次 每次插入1百万条,查了0.016s)

System.arraycopy(elementData, index, elementData, index + 1,size - index);

JAVA基础:ArrayList和LinkedList区别的更多相关文章

  1. Java基础-ArrayList和LinkedList的区别

    大致区别:  1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为Lin ...

  2. Java中ArrayList和LinkedList区别 时间复杂度 与空间复杂度

    一般大家都知道ArrayList和LinkedList的大致区别:      1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.      2.对于随机访问 ...

  3. Java基础——ArrayList与LinkedList(一)

    一.定义 ArrayList和LinkedList是两个集合类,用于储存一系列的对象引用(references). 引用的格式分别为: ArrayList<String> list = n ...

  4. Java中ArrayList和LinkedList区别

    ArrayList和LinkedList的大致区别如下:1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,ArrayLis ...

  5. Java基础——ArrayList与LinkedList(二)

    今天练习ArrayList与LinkedList,在网上看到有关它俩应用效率的题型.觉得很有价值,保留一下. import java.util.ArrayList; import java.util. ...

  6. Java中ArrayList和LinkedList区别、ArrayList和Vector的区别

    一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,Ar ...

  7. Java中ArrayList和LinkedList区别(转)

    具体详情参考原博客:  http://pengcqu.iteye.com/blog/502676

  8. Java中ArrayList与LinkedList的区别

    Java中ArrayList与LinkedList的区别 一般大家都知道ArrayList和LinkedList的区别: 1. ArrayList的实现是基于数组,LinkedList的实现是基于双向 ...

  9. java中ArrayList 和 LinkedList 有什么区别

    转: java中ArrayList 和 LinkedList 有什么区别 ArrayList和LinkedList都实现了List接口,有以下的不同点:1.ArrayList是基于索引的数据接口,它的 ...

随机推荐

  1. Ajax全局加载框(Loading效果)的配置

    在Ajax进行后台数据请求的过程中,我们有时候会希望用户能知道页面后台还在做一些事情,这时候就需要给用户一个非常明确的提示,也就是我们所谓的进度条 废话完成~ 实现原理: Jquery可以对ajax进 ...

  2. 大数据框架-Mapreduce过程

    1.Shuffle [从mapTask到reduceTask: Mapper -> Partitioner ->Combiner -> Sort ->Reducer] mapp ...

  3. Java项目排查cpu负载高

    背景 我负责的其中一个项目在空负载的情况下,CPU占用率依然保持着100%左右,线上.测试.开发的服务都一样:是什么导致的呢?在开发环境我查看了请求流量,这个流量可以忽略但CPU占用率一直在60%-1 ...

  4. you don't have permission to access ...........on this server问题解决

    因为刚刚开始使用新架构的项目,于是把老项目统统替换成了新的项目.配置好后,本地登录页面报 you don't have permission to access ...... on this serv ...

  5. 《DOM编程艺术》读书笔记<概述>

    作为一名前端开发工程师,学习的过程中总少不了各种各样的书籍,作为新手如何在众多书籍中选到适合自己的呢,我们今天先来谈谈<DOM编程艺术>这本书. 其实呢大部分书都是好书,就像LOL中大部分 ...

  6. 将图片绘制到画布上:imagecopy()

    <?php //1. 绘制图像资源(创建一个画布) $image = imagecreatetruecolor(500, 300); //2. 先分配一个绿色 $green = imagecol ...

  7. yii学习笔记(7),数据库操作,联表查询

    在实际开发中,联表查询是很常见的,yii提供联表查询的方式 关系型数据表:一对一关系,一对多关系 实例: 文章表和文章分类表 一个文章对应一个分类 一个分类可以对应多个文章 文章表:article 文 ...

  8. Scala 语法(一)

    (1)基本语法 变量 val var(可变变量): 数据类型 Byte,Char,Int,Short,Long,String(字符),Float,Double,Boolean(true,flase). ...

  9. Python在线编程环境

    除了安装Python的IDE之外,也可以使用在网页中随时随地编写Python程序. Python官网:https://www.python.org/shell Python123:https://py ...

  10. 第4天 Java基础语法

    第4天 Java基础语法 今日内容介绍 流程控制语句(switch) 数组 流程控制语句 选择结构switch switch 条件语句也是一种很常用的选择语句,它和if条件语句不同,它只能针对某个表达 ...