接口List<E>常用实现类分析
2016-03-29 22:54
399 查看
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 时,按步长扩展容量;
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 时,按步长扩展容量;
相关文章推荐
- 简单谈谈自己对htm与css中画圆的理解。
- error C2065: 'Public_Area' : undeclared identifier
- 深入理解JavaScript系列(四): 模块化编程
- 第5周项目1(3)三角形类雏形
- 1012. 数字分类 (20)
- cf17A Noldbach problem (素数打表)
- jQuery选择器案例
- 第5周项目4—长方柱类
- java工程转成maven工程
- iOS友盟推送
- JDK中的URLConnection参数详解
- RingtoneManager
- 阿里的分布式持续集成系统-reliable
- collection view 自定义
- 安装lnmp后,忘记phpmyadmin的root密码,怎么办
- Think in UML笔记第1章--为什么要UML
- 复杂链表的复制
- 第三百六十一天 how can I 坚持
- Android——滚动视图(ScrollView)图片视图(ImageView)、状态开关按钮(ToggleButton)、时钟
- 软件开发中前期准备的重要性