java的List集合们ArrayList vs. LinkedList vs. Vector
2017-12-14 17:21
369 查看
![](https://www.programcreek.com/wp-content/uploads/2009/02/java-collection-hierarchy.jpeg)
![](https://www.programcreek.com/wp-content/uploads/2013/03/arraylist-vs-linkedlist-complexity.png)
![](https://www.programcreek.com/wp-content/uploads/2013/03/arraylist-vs-linkedlist1.png)
package demo;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Vector;
import org.junit.Test;
public class ArrayList_vs_LinkedList_vs_Vector {
@Test
public void test1() {
// TODO Auto-generated method stub
// ArrayList被实现为可调整的数组。随着更多元素被添加到ArrayList中,它的大小被动态地增加。
// 通过使用get和set方法可以直接访问元素,因为ArrayList本质上是一个数组。
/**
* ArrayList被实现为可调整的数组。随着更多元素被添加到ArrayList中,
* 它的大小被动态地增加。通过使用get和set方法可以直接访问元素,因为ArrayList本质上是一个数组。
*/
ArrayList<Integer> al = new ArrayList<Integer>();
al.add(0, 1);
al.add(0, 2);
al.get(0);//经研究源码分析 ArrayList的本质是数组,和数组取值一样,arryname[0]
al.remove(3);
System.out.println(al);//[2, 1]
/**
* LinkedList被实现为一个双链表。它在插入和删除方面的性能优于Arraylist,但是在get和set方法上更差。
*/
LinkedList<Integer> ll = new LinkedList<Integer>();
ll.add(0, 1);
ll.add(0, 2);
ll.add(0, 3);
ll.add(0, 4);
ll.get(3);//经研究源码分析 LinkedList是一个双向链表,他会判断查找索引属于这条链子的前半段还是后半段,或选择头结点或选择尾节点进行顺藤摸瓜式的寻找
ll.remove(3);
/**
* 付一段get(int)源码: Node<E> node(int index) {
* // assert isElementIndex(index);
*
* if (index < (size >> 1)) {
* Node<E> x = first;
* for (int i = 0; i < index; i++)
* x = x.next;
* return x;
* } else {
* Node<E> x = last;
* for (int i = size - 1; i > index; i--)
* x = x.prev;
* return x;
* }
* }
*/
System.out.println(ll);//[2, 1]
/**
* 向量与ArrayList几乎是相同的,区别在于向量是同步的。因此,它的开销大于ArrayList。
* 通常,大多数Java程序员使用ArrayList而不是向量,因为他们可以自己进行显式同步。
*/
Vector<Integer> vl = new Vector<Integer>();
}
}
相关文章推荐
- 回首Java——ArrayList vs. LinkedList vs. Vector
- Java Vector ArrayList LinkedList 区别
- Java 集合 1:Collection,List,ArrayList,Vector,LinkedList(实现方式,对比)
- java中Vector跟ArrayList、LinkedList之间的区别
- java(20130801)异常、集合、ArrayList和LinkedList的比较、Vector和ArrayList的异同
- JAVA ArrayList 和LinkedList Vector
- Java集合--深度剖析Vector、Stack、ArrayList、LinkedList(二)
- Java ArrayList、Vector和LinkedList等的差别与用法(转)
- Java中Hashset、HashMap、ArrayList、LinkedList、Vector之间的联系与区别
- Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
- Java ArrayList、Vector和LinkedList等的差别与用法
- java中ArrayList、LinkedList和Vector的区别
- Java中Hashset、HashMap、ArrayList、LinkedList、Vector之间的联系与区别
- Java中的 Vector、ArrayList和LinkedList
- java中ArrayList、Vector、LinkedList三者的异同点
- Java ArrayList、LinkedList、Vector的区别
- JAVA学习第三十五课(常用对象API)—Vector、LinkedList、ArrayList集合演示
- java集合(ArrayList,Vector,LinkedList,HashSet,TreeSet的功能详解)
- Java ArrayList、Vector和LinkedList等的差别与用法(转)
- java 集合学习笔记2-ArrayList LinkedList Vector 泛型 增强for 可变参数