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不 ...
随机推荐
- mysql的DISABLE/ENABLE KEYS
有一个表 tbl1 的结构如下: CREATE TABLE `tbl1` ( `id` int(10) unsigned NOT NULL auto_increment, `name` char(20 ...
- Eclipse 代码显示不全的问题
Eclipse中的"Show Source of Selected Element Only"功能引起的, 定位到: Window->Customize Perspectiv ...
- Java四种线程池的使用
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程.newFixe ...
- SAM/BAM文件处理
当测序得到的fastq文件map到基因组之后,我们通常会得到一个sam或者bam为扩展名的文件.SAM的全称是sequence alignment/map format.而BAM就是SAM的二进制文件 ...
- stl vector erase
C++ Code 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...
- Sublime Text永久设置使用4个空格缩进
Sublime Text是一款轻量高效的代码编辑器,官网地址是:http://www.sublimetext.com/,默认情况下sublime是使用tab进行缩进,如果手动敲空格是比较麻烦的,并且很 ...
- python第15天
Python之Web前段: 一. JavaScript 一. JavaScript 1. 什么是JavaScript ? JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释 ...
- Java GridBagLayout 简单使用
这里只介绍了很基础布局构建及使用,主要是关于 GridBagLayout. 首先整套流程大概是, 声明一个 GridBagLayout 对象 private GridBagLayout gridBag ...
- bzoj4260
题目大意:求不相交的两段区间,两段的异或和加起来最大是多少 区间异或和记得转化成前缀和啊我个sb 变成一对数的异或值就变成trie了啊 两段区间的话,从左往右一颗trie,从右往左一颗trie #in ...
- 【转】详解Java正则表达式语法
(转自: http://www.jb51.net/article/76354.htm) 这篇文章主要介绍了Java正则表达式语法,包括常用正则表达式.匹配验证-验证Email是否正确以及字符串中查询字 ...