Java集合类学习-LinkedList, ArrayList, Stack, Queue, Vector

Collection
List
在Collection的基础上引入了有序的概念,位置精确;允许相同元素。在列表上迭代通常优于索引遍历。特殊的ListIterator迭代器允许元素插入、替换,双向访问,从列表中的制定位置开始(根据index获取index位置的元素)。未实现get方法。
AbstractList
实现了List中的一些方法,支持随机访问。lastIndexOf通过特殊迭代器能够制定开始位置,从后遍历的特性来实现。直接通过指定的位置,借助特殊迭代器找到。
Vector
实现可增长的数组。提供额外的方法来增加、删除元素,比数组操作高效。在增加数组时,会增加1倍,且初始时可以设置增长的空间大小。Vector是线程安全的,通过在方法中加入synchoronized关键字体现。
Stack
在Vextor的基础上引入了后进先出(LIFO)的对象堆栈。 通过添加5个操作实现:push , pop , peek , empty ,在堆栈中查找项并确定到堆栈顶距离的 search
AbstractSuquentialList
扩展了AbstractList, 但是最大限度地减少了实现受连续访问数据存储支持的此接口所需的工作。通过制定迭代器的起始位置直接找到对应元素。
LinkedList
采用链表的方式实现。
ArrayList
采用数据实现。在增加数组时,默认为0.5倍,不是线程安全的。
Queue
在Collection的基础上引入了队列的特性,先进先出。添加元素有两个,add和offer: add在没有可用空间时会抛出异常,offer会返回false。同poll和remove的区别。add用在链表中,offer用在队列中,前者是实现了list接口的方法,后者是实现了queue接口的方法。
Queue与List并列,不支持按索引获取元素。
Deque
双端队列在Queue的基础上支持在两端插入和移除元素。addLast,removeLast等对应Queue中的方法,有添加了新的方法。
区别区分
Vector与数组: vector实现了数组[]的动态增长。
ArrayList与Vector:(1)同步性; (2)数据增长。
ArrayList与LinkedList:(1)数据结构;(2)不同的优势:随机访问,增删操作。
Java集合类学习-LinkedList, ArrayList, Stack, Queue, Vector的更多相关文章
- java集合类(三)About Iterator & Vector(Stack)
接上篇:java集合类学习(二) Talk about “Iterator”: 任何容器类,在插入元素后,还需要取回元素,因为这是容器的最基本工作.对于一般的容器,插入有add()相关方法(List, ...
- java集合类(六)About Queue
接上篇“java集合类(五)About Map” 终于来到了java集合类的尾声,太兴奋了,不是因为可以休息一阵了,而是因为又到了开启新知识的时刻,大家一起加油打气!!Come on...Fighti ...
- java集合类学习心得
java集合类学习心得 看了java从入门到精通的第十章,做个总结,图片均取自网络. 常用集合的继承关系 Linked 改快读慢 Array 读快改慢 Hash 两都之间 Collection是集合接 ...
- java集合类学习
以下基于jdk1.8 一. 集合类关系图 1. 接口关系图 2.集合中的类,(不包含线程安全的) 二.ArrayList 1.类定义 /** * 用“可伸缩数组”来实现List接口.实现了所有List ...
- java集合类,HashMap,ArrayList
集合类 Collection LinkedList.ArrayList.HashSet是非线程安全的, Vector是线程安全的; ArrayXxx:底层数据结构是数组,连续存放,所以查询快,增删慢. ...
- java集合类之LinkedList详解
一.LinkedList简介 由于LinkedList是一个实现了Deque的双端队列,所以LinkedList既可以当做Queue,又可以当做Stack,在将LinkedList当做Stack时,使 ...
- Java集合类学习笔记(Queue集合)
Queue集合用于模拟队列(先进先出:FIFO)这种数据类型. Queue有一个Deque接口,代表一个"双端队列",双端队列可以同时从两端来添加.删除元素,因此Deque的实现类 ...
- 【java】学习路径25-ArrayList类,Vector类,LinkedList类的使用和区别,Iterator迭代器的使用
ArrayList的使用 ArrayList类:可变化长度的数组. 与一般的数组不同的是,其长度不固定,可以添加任意类型的数据. 也可以添加不同类型的数据,但是一般不这么做. ArrayList类位于 ...
- java集合类学习笔记之ArrayList
1.简述 ArrayList底层的实现是使用了数组保存所有的数据,所有的操作本质上是对数组的操作,每一个ArrayList实例都有一个默认的容量(数组的大小,默认是10),随着 对ArrayList不 ...
随机推荐
- Oracle 查看某表 被哪些表外键引用
分2步骤: 1. select * from user_constraints e where e.table_name='xxx'; 2. select a.constraint_type,a.ta ...
- Wampserver主机服务配置方法
一.更改根目录 1.左键”www目录”路径更改Wampserver安装好后,“www目录”默认为X:\wamp\www,也就是wampserver安装目录下的www文件夹.实际使用中,默认设置往往不 ...
- Json序列化与反序列化
参考:http://www.cnblogs.com/caofangsheng/p/5687994.html#commentform 下载链接:http://download.csdn.net/deta ...
- Nginx上传文件返回413的解决
通过http上传文件时返回403 Request Entity Too Large错误时,原因是默认设置的允许上传文件太小,默认是2M,如果上传文件大小大于2M时,那么就会返回413的错误,修改ngi ...
- October 15th 2016 Week 42nd Saturday
Word to World. There are only two kinds of people who are really fascinating, people who know absolu ...
- iOS之initialize与load
initialize和load 这两个方法都是是什么时候调用的呢?都有着什么样的作用,下面看看吧! initialize +(void)initialize{ } 什么时候调用:当第一次使用这个类的时 ...
- 与你相遇好幸运,使用gulp流程化Typescript后端开发
tsc --init { "compilerOptions": { "module": "commonjs", ...
- [译]SSAS下玩转PowerShell(三)
在第一篇中简单介绍了PowerShell,包含基本的一些命令,以及如何打开PowerShell,并且导航到SSAS对象.第二篇中学习了如何使用变量根据当前日期创建SSAS备份,以及如何运行MDX和XM ...
- Linux下安裝Oracle database內核參數設置
參考:1529864.1 ************************************************** RAM ...
- vue
vue.js 插件 setting--> plugins 搜索vue,下载安装如果想要高亮显示*.vue文件,可以在File Types 选项里找到HTML,然后在下方手动添加*.vue,这样就 ...