一、基础篇--1.2Java集合-Arraylist 与 LinkedList 区别
2019-02-14 15:11
405 查看
一、基础篇--1.2Java集合-Arraylist 与 LinkedList 区别
Arraylist 与 LinkedList 区别
结构上的区别
ArrayList底层实现基于动态数组,LinkedList底层实现基于双向链表。
性能上区别
ArrayList查询快,增删慢,LinkedList增删快,查询慢
ArrayList和LinkedList都是非线程安全的
遍历列表:
常用的遍历列表有三种方法,分别为foreach、迭代器、for循环
构造一个拥有100万数据的ArrayList和等价的LinkedList,测试结果的相对耗时如下表所示:
List类型 | forEach | 迭代器 | for循环 |
---|---|---|---|
ArrayList | 110ms | 81ms | 16ms |
LinkedList | 78ms | 15ms | 很久 |
可以看到,最简便的ForEach循环并没有很好的性能表现,综合性能不如普通的迭代器,而是用for循环通过随机访问遍历列表时,ArrayList表项很好,但是LinkedList的表现却无法让人接受,甚至没有办法等待程序的结束。这是因为对LinkedList进行随机访问时,总会进行一次列表的遍历操作。性能非常差,应避免使用。
要注意的地方
1.ArrayList是基于数组实现的,如果不指定大小,会有个默认值,当空间不足时,每次扩容1.5倍,调用System.arraycopy(),如果arrayList存储数据较大,不指定具体大小,会很影响性能。
2.LinkedList删除时候,先要遍历找到该节点,如果该节点在中间,数据量还比较大的话,性能较差。
posted @ 2019-02-14 15:11 ForeverYoungCoder 阅读(...) 评论(...) 编辑 收藏相关文章推荐
- Java基础之集合类如ArrayList、LinkedList、HashMap、HashTable的区别
- java源码分析之集合框架 ArrayList和LinkedList的区别05
- java基础(集合List-ArrayList、LinkedList、Vector的区别)
- Java面试基础篇——第四篇:ArrayList和LinkedList的区别
- (9) java ---- 集合框架图 ArrayList,LinkedList,Vector各自的性能特点及区别
- java基础之集合List-ArrayList、LinkedList、Vector的区别
- Java基础之集合List-ArrayList、LinkedList、Vector的底层实现和区别
- 你知道java集合ArrayList和LinkedList的区别吗?
- Java 集合 ArrayList和LinkedList的区别
- java 集合 之 链表和线性表以及ArrayList的各方法的介绍及示例 及 ArrayList与LinkedList的区别分析 及 ArrayList与Array(数组)的区别
- 【Java集合list】ArrayList和LinkedList区别
- Java集合:List、Set和Map的区别,ArrayList和LinkedList有何区别..........
- 一、基础篇--1.2Java集合-ArrayList和Vector的区别
- 关于java集合(3)-ArrayList和LinkedList的区别
- Java基础---集合框架---迭代器、ListIterator、Vector中枚举、LinkedList、ArrayList、HashSet、TreeSet、二叉树、Comparator
- java基础(6)--java中HashSet、LinkedHashSet、TreeSet、ArrayList、ArrayDeque、LinkedList使用区别
- java集合学习(四)---线程安全版的ArrayList和LinkedList
- 【Java】 ArrayList与LinkedList的区别
- java vector arraylist linkedlist用法与区别
- Java中ArrayList和LinkedList区别