Android面试

Java:ArrayList、LinkedList、Vector

2016-12-16  本文已影响80人  d26168ad953a

先看看他们继承结构
Collection
  ------List
  ----LinkedList
  ----ArrayList
  ----Vector

1、ArrayList
ArrayList类的定义为:

public class ArrayList<E> extends AbstractList<E> 
      implements List<E> ,RandomAccess,Cloneable,Serializable

ArrayList 有如下特性:
  *可变大小的数组
  *非线程安全
  *当更多的元素加入到ArrayList 时,其大小会动态的增长。每次增长的空间是其size的50%。
  *初始容量是10
  *允许null元素

2、LinkedList
LinkedList类定义:

public class LinkedList<E> extends AbstractSequentialList<E>  
      implements List<E>, Deque<E>, Cloneable, Serializable

LinkedList有如下特性:
  *是一个双链表
  *非线程安全
  *在添加和删除元素元素时具有比ArrayList更好的性能
  *LinkedList还实现了Queue接口(非直接实现,是通过实现Queue的子接口Deque间接实现Queue),该接口比List提供了更多方法。包括从尾部添加元素:offer(E)、返回第一个元素但不出队:peek()、返回第一个元素并出队:poll()等。
  *允许null元素

由于LinkedList不同步,可以通过如下方式转化为同步的List

 List list= Collections.synchronizedList(new LinkedList());

3、Vector
Vector类定义:

public class Vector<E> extends AbstractList<E>  
      implements List<E>, RandomAccess, Cloneable, Serializable

Vector类有如下特性:
  *Vector和ArrayList类似,但属于强同步类。
  *比ArrayList多了线程安全。
  *默认每次动态增加空间是当前大小的2倍;如果在构造函数Vector(int initialCapacity, int capacityIncrement)中指定了capacityIncrement,每次动态增加的大小为capacityIncrement
  *初始容量是10
  *允许null元素

4 对比表

长度可变 线程安全 扩容倍数
ArrayList 0.5(初始10)
Vector -
ArrayList 2(初始10)

-

上一篇下一篇

猜你喜欢

热点阅读