ArrayList or. LinkedList or. Vecto

ArrayList is implemented as a resizable array. As more elements are added to ArrayList, its size is increased dynamically. It‘s elements can be accessed directly by using the get and set methods, since ArrayList is essentially an array.

LinkedList is implemented as a double linked list. Its performance on add and remove is better than Arraylist, but worse on get and set methods.

Vector is similar with ArrayList, but it is synchronized.

ArrayList is a better choice if your program is thread-safe. Vector and ArrayList require more space as more elements are added. Vector each time doubles its array size, while ArrayList grow 50% of its size each time. LinkedList, however, also implements Queue interface which adds more methods than ArrayList and Vector, such as offer(), peek(), poll(), etc.

ArrayList example

 1 ArrayList<Integer> al = new ArrayList<Integer>();
 2 al.add(3);
 3 al.add(2);
 4 al.add(1);
 5 al.add(4);
 6 al.add(5);
 7 al.add(6);
 8 al.add(6);
 9
10 Iterator<Integer> iter1 = al.iterator();
11 while(iter1.hasNext()){
12     System.out.println(iter1.next());
13 }

LinkedList example

 1 LinkedList<Integer> ll = new LinkedList<Integer>();
 2 ll.add(3);
 3 ll.add(2);
 4 ll.add(1);
 5 ll.add(4);
 6 ll.add(5);
 7 ll.add(6);
 8 ll.add(6);
 9
10 Iterator<Integer> iter2 = ll.iterator();
11 while(iter2.hasNext()){
12     System.out.println(iter2.next());
13 }

Note: The default initial capacity of an ArrayList is pretty small. It is a good habit to construct the ArrayList with a higher initial capacity. This can avoid the resizing cost.

时间: 2024-10-27 09:47:16

ArrayList or. LinkedList or. Vecto的相关文章

Java中ArrayList和LinkedList区别

一般大家都知道ArrayList和LinkedList的大致区别:      1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.      2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针.      3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据. ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用

java的List接口的实现类 ArrayList,LinkedList,Vector 的区别

Java的List接口有3个实现类,分别是ArrayList.LinkedList.Vector,他们用于存放多个元素,维护元素的次序,而且允许元素重复. 3个具体实现类的区别如下: 1. ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制.移动.代价比较高.因此,它

ArrayList和LinkedList的区别

从字面上大概可以猜出ArrayList是用数组实现的的一种数据结构:LinkedList采用链表实现.那么要剖析区别的话大概可以概括到数组和链表的区别.结合在数据结构课上所学,我大概可以猜出几点区别,无外乎数组采用连续的内存空间存储数据,链表中用到了引用,那么存储的内容可以不在连续的内存空间里.以上是假如不会ArrayList和LinkedList的前提下做的假设.实际上两者主要区别有三点. 1.ArrayList是使用动态数组实现的数据结构,LinkedList使用双链表实现   2.Arra

List、ArrayList、LinkedList的区别及使用

首先我们要知道List是java中的接口,而不是实现类,所以它是不能实例化的,例如以下代码: 1 public static void main(String[] args) { 2 List list=new List(); 3 4 } java中会报错,而ArrayList和LinkedList是实现了这个接口的实现类,可以进行实例化,其定义如下: 1 public static void main(String[] args) { 2 3 ArrayList list1=new Array

Java中arraylist和linkedlist源代码分析与性能比較

Java中arraylist和linkedlist源代码分析与性能比較 1,简单介绍 在java开发中比較经常使用的数据结构是arraylist和linkedlist,本文主要从源代码角度分析arraylist和linkedlist的性能. 2,arraylist源代码分析 Arraylist底层的数据结构是一个对象数组.有一个size的成员变量标记数组中元素的个数,例如以下图: * The array buffer into which the elements of the ArrayLis

JAVA集合类之ArrayList和LinkedList性能比较

关于ArrayList和LinkedList这两个集合类的性能,网上很多文章表示:ArrayList的插入性能要比LinkedList差.今天突然想测试下,这个结论是否准确. 编写了如下代码: import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class Demo { public static void main(String[] args) { int count = 

ArrayList和LinkedList

ArrayList,LinkedList 首先提一下LinkedList,ArrayList的定义概念: ArrayList:ArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayList中添加对象是,数组的大小也相应的改变. 优点: 快速随即访问 你可以随即访问每个元素而不用考虑性能问题,通过调用get(i)方法来访问下标为i的数组元素. 缺点:      向其中添加对象速度慢 当你创建数组是并不能确定其容量,所以当改变这

ArrayList vs. LinkedList vs. Vector

翻译自:ArrayList vs. LinkedList vs. Vector 1.列表概览 就像它的名字一样,List是一个元素的有序序列.当我们讨论列表时把它与Set(两两不等且无序的元素集合)进行比较是一个好主意.下面是容器的类层次图.从这个层次图中可以了解Java容器的一般概念. 2.ArrayList vs. LinkedList vs. Vector 从上图可知,它们都实现了List接口,而且用法很相似.它们主要的不同在于它们的实现导致的对不同的操作有不同的性能. ArrayList

ArrayList,Vector,LinkedList的存储性能和特征

ArrayListh和Vector都是采用数组的方式来存储数据,其中ArrayList是线程不安全的,Vector是线程安全,所以ArrayList的性能要比Vector的性能好一些,而LinkedList采用的双向链表来实现数据的存储,而且是线程不安全的,而且LinkedList提供了一些方法,使得LinkedList可以被当做栈和队列来使用.因为ArrayList和Vector采用的数组的方式来实现存储数据,所以查询数据比较快捷,但是进行数据增删操作比较慢些,但是LinkedList采用的事