这里有新鲜出炉的 Java 并发编程示例,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要通过实例对 Java 中 ArrayList 与 LinkedList 进行了对比,需要的朋友可以参考下
ArrayList,LinkedList 都是 Collection 接口的通用实现方式,两者采用了不用的存储策略,用来适应不同场合的需要。
实现方式
ArrayList 的内部采用集合的方式存储数据
唯一需要注意的是对于容量超过阈值的处理逻辑,数组的默认容量大小是 10,最大容量是 Integer.Max_Value, 超过最大容量会抛内存溢出异常,
扩容机制看下面
扩容后的容量是原有容量的 1.5 倍
LinkedList 的实现方式
内部采用双向链表 Node 内部类来存储数据,由于采用了双向链表,LinkedList 也可以当做栈和队列来使用,但是效率比较低,Java 提供了 ArrayDeqeue 的高效率实现。
性能比较
在尾部插入效率上面,两者相差不会太大,但是 LinkedList 需要维护双向链表的关系,所有存储效率上面会略逊于 ArrayList
ArrayList 的时间主要耗时在容量扩容,数据迁移上面,如果我们一次性初始化容量,应该还可以有提升的空间,再来对比看看,有恐怖的 50% 的提升空间
Linked 的优势在于头部插入的效率,只需要修改头部元素的指针就可以做到,而数组还需要移动后续的数据,所有效率远远低于 LinkedList
对于 get,set 的操作,链表内部通过二分查找,数组可以通过下标直接访问元素,所以效率高于 LinkedList
基于以上比较,我们基本上可以确定
如果只是存放数据,并进行 j 简单的迭代情况下,我们一般采用集合的效率最高,
如果涉及到频繁的修改元素,就应该采用 LinkedList
希望本篇文章对您有所帮助
来源: http://www.phperz.com/article/17/1220/357508.html