接口List<E>常用实现类分析

来源:互联网 发布:幸运双色球过滤软件 编辑:程序博客网 时间:2024/06/05 15:06

List<E>常用的实现类包括:ArrayList<E>,LinkedList<E>,Stack<E>和Vector<E>。


ArrayList<E>:List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)

初始容量可以通过构造方法来指定,如下图:



观察ArrayList的构造方法可知,默认不传参newArrayList,容量为10,如果传入一个int值,容量为传入的int值,如果入参为一个Collection,则容量为Collection的大小。

扩容策略为新容量为原容量的1.5倍((原始容量x3)/2 + 1)。


LinkedList<E>:List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。下图为LinkedList<E>的构造方法。



Stack<E>:Stack 类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search 方法。构造方法如下图:
首次创建堆栈时,它不包含项。



Vector<E>:Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。每个向量会试图通过维护 capacity 和 capacityIncrement 来优化存储管理。capacity 始终至少应与向量的大小相等;这个值通常比后者大些,因为随着将组件添加到向量中,其存储将按 capacityIncrement 的大小增加存储块。应用程序可以在插入大量组件前增加向量的容量;这样就减少了增加的重分配的量。





Vector    初始容量10    capacityIncrement容量扩展步长:步长<= 0时(默认0),容量倍增;步长 >0 时,按步长扩展容量;




1 0
原创粉丝点击