五、ArrayList<E>类
1、ArrayList<E>类的定义
public class ArrayList<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, Serializable
ArrayList<E>类继承了AbstractList<E>类的功能,同时又显式实现了List<E>接口,实现了RandomAccess接口,表示可以支持快速随机访问。
其中RandomAccess接口是个标记接口(即无方法的接口),此处本来List<E>接口中有E get(int index)方法可以做到快速随机访问,为什么还要单独实现RandomAccess接口呢?
原因是做个标记,在其他地方如果要用到RandomAccess接口类型的参数时或者在某些算法中需要RandomAccess接口标记,则ArrayList<E>类就满足条件了。标记接口学过的还有:Serializable接口和Cloneable接口。
此处ArrayList<E>类也实现了Cloneable接口和Serializable接口,分别表示可克隆的和可被序列化的。
2、ArrayList<E>类的操作方法(3个)
1、public ArrayList()
2、public ArrayList(Collection<? extends E> c)
3、public ArrayList(int initialCapacity)
3、ArrayList<E>类的操作方法(20个)
(1)实现List<E>接口中原来Collectiont<E>接口就有的(9个)
1、public boolean add(E e)
2、public boolean addAll(Collection<? extends E> c)
3、public void clear()
4、public boolean contains(Object o)
5、public boolean isEmpty()
6、public boolean remove(Object o)
7、public int size()
8、public Object[] toArray()
9、<T> T[] toArray(T[] a)
(2)实现List t<E>接口中扩展的原来Collection接口没有的(7个)
1、public void add(int index,E element)
2、boolean addAll(int index,Collection<? extends E> c)
3、public E get(int index)
4、public int indexOf(Object o)
5、public int lastIndexOf(Object o)
6、public E remove(int index)
7、public E set(int index,E element)
(3)覆写Object类的 Object clone()方法
(4)实现AbstractList<E>类扩展的的抽象方法
1、protected void removeRange(int fromIndex,int toIndex)
(5)ArrayList<E>类自己扩展的(2个)
1、public void ensureCapacity(int minCapacity)
2、public void trimToSize()
六、Vector<E>类
1、Vector<E>类的定义
public class Vector<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, Serializable
说明同ArrayList<E>类
2、Vector<E>类的构造方法
比ArrayList<E>类多一个public Vector(int initialCapacity,int capacityIncrement)
3、其操作方法在(具有和ArrayList<E>类相同的方法)基础上又扩展了更多其他的,详见文档
七、ArrayList<E>类和Vector<E>类的区别
No. |
区别点 |
ArrayList |
Vector |
1 |
引入时间 |
是新的类,是在JDK 1.2之后推出的 |
是旧的类是在JDK 1.0的时候就定义的 |
2 |
性能 |
性能较高,是采用了异步处理 |
性能较低,是采用了同步处理 |
3 |
输出 |
支持Iterator、ListIterator输出 |
除了支持Iterator、ListIterator输出,还支持Enumeration输出 |
八、LinkedList<E>类
1、LinkedList<E>类的定义
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
2、AbstractSequentialList<E>类的操作方法
(1)实现List接口中原来Collection接口就有的(1个)
1、public Iterator<E> iterator()
(2)实现List接口中扩展的原来Collection接口没有的(10个)
1、public void add(int index,E element)
2、boolean addAll(int index,Collection<? extends E> c)
3、public E get(int index)
4、public ListIterator<E> listIterator(int index)
5、public E remove(int index)
6、public E set(int index,E element)
3、LinkedList<E>类的操作方法
此类和ArrayList<E>类比较除了继承的类不同之外,比ArrayList<E>类多实现了一个Deque<E>接口,而Deque<E>接口是Queue<E>接口的子接口,因此比较明显的不同之处是多了如下方法:
1、public boolean add(E e)
2、public E element()
3、public boolean offer(E e)
4、public E peek()
5、public E poll()
6、public E remove()