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不 ...
随机推荐
- Linux 执行文件查找命令 which 详解
某个文件不知道放在哪里了,通常可以使用下面的一些命令来查找: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查 ...
- jvm七种垃圾收集器
JVM_七种垃圾收集器介绍 本文中的垃圾收集器研究背景为:HotSpot+JDK7 一.垃圾收集器概述 如上图所示,垃圾回收算法一共有7个,3个属于年轻代.三个属于年老代,G1属于横跨年轻代和年老 ...
- php命名空间
命名空间概述 (PHP 5 >= 5.3.0, PHP 7) 什么是命名空间?从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念.例如,在操作系统中目录用来将相关文件分 ...
- 【Maven】解决缺少Jar包问题
解决办法:进入项目的根目录(即 pom.xml文件所在的目录)执行:mvn dependency:copy-dependencies完成后进入eclipse,发现项目不再报错前提条件:1,安装了mav ...
- MATLAB的SAVE命令动态批量保存TXT文件
1.使用save(): for i=1:6 str=[num2str(i),’.txt’]; m=[1 2; 3 4]; save(str,’m’,’-ascii’);%注意m的单引号,一定记得加上, ...
- cf593d
题意:给出一个有n(n<=200000)的树形图,每条边有一个权值.有两种操作,1是将一个边的权值变小, 2是给定两点a,b和一个值y,用y(long long范围内)依次除以两点之间的路径上的 ...
- iOS 查询数组中的对象
简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取. 定义(最常用到的方法): NSPredicate *ca = [NSPred ...
- CPrimerPlus第十一章中的“选择排序算法”学习
C Primer Plus第十一章字符串排序程序11.25中,涉及到“选择排序算法”,这也是找工作笔试或面试可能会遇到的题目,下面谈谈自己的理解. 举个例子:对数组num[5]={3,5,2,1,4} ...
- JAVA学习笔记之与C#对比
最近在学习java,刚学完入门课程...下面说一下入门课程中相对印象深刻的知识点 JAVA-C#差异 1. for循环 C# string [] strarr=new string[5]; forea ...
- jquery this 和 event.target 区别
1.this和event.target的区别: js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素: 2.this和event.t ...