赞
踩
一、背景。
这篇文章主要介绍了ArrayList、LinkedList、Vector详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。放假在家里休息,闲来无事,想巩固巩固自己的基础知识。Java基础这个我会一直更新的,希望大家关注 收藏 点赞。
二、概述:
1.ArrayList:
ArrayList 是动态数组,动态的意思是可以随时增加数组长度,众所周知,普通数组的长度是定死的,想要增加长度,就必须重新定义一个固定长度的数组,然后在把元素加进去,但是ArrayList可以随意增加或删除元素,这就让我们在操作的时候变得更灵活,动态数组每个元素都有一个下标,也就是标识这个元素的位置,通过这个下标,计算机就可以知道这个元素存放在内存的哪个位置,所以ArrayList 想要遍历查找某个元素的时候很快就能找到!而且,ArrayList也是线程不安全的
2.LinkedList:
LinkedList的底层就是用双向链表实现的,因为链表本身是无序的,所以LinkedList 插入或者删除都很快,但是要查找或者遍历的时候就会很慢,因为双向链表每次查找某个元素的时候都会在内部遍历一遍,直到找到那个指定下标的元素为止,另外,LinkedList 的内存占用要比ArrayList大,因为LinkedList除了存储数据之外,还存储了2个指针,一个指向前一个元素,一个指向后一个元素。
3.Vector:
总体来说,Vector除了是线程安全的之外,Vector 和 ArrayList 的底层存储结构基本相似,但又不完全相同。
4.ArrayList和LinkedList区别:
- 1)相同点:
- LinkedeList和ArrayList都实现了List接口。
- ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。
-
- 2)不同点:
- ArrayList底层的实现数组,而LinkedList是双向链表。
- ArrayList进行随机访问所消耗的时间是固定的,因此随机访问时效率比较高。
- LinkedList是不支持快速的随机访问的,但是在插入删除时效率比较高。
5.ArrayList和Vector区别:
- 1)相同点:
- ArrayList和Vector都是用数组实现的。
- 默认初始化大小都是10
-
- 2)不同点
- Vector多线程是安全的,而ArrayList不是。Vector类中的方法很多有synchronized进行修饰,这样就导致了Vector在效率上无法与ArrayList相比;
- 两个都是采用的线性连续空间存储元素,但是当空间不足的时候,两个类的增加方式是不同的。(ArrayList每次存储时会检查空间大小,不够时会扩充为原来的1.5倍,Vector会扩充为原来空间的2倍)
- Vector可以设置增长因子,而ArrayList不可以。
- ArrayList有三个构造方法,Vector有四个构造方法。
6.ArrayList、LinkedList、Vector区别网格图:
7.ArrayList,Vector, LinkedList 的存储性能和特性:
ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数 据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组 元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了 synchronized 方法(线程安全)。
通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数 据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插 入速度较快 。
ArrayList 在查找时速度快,LinkedList 在插入与删除时更具优势。
8.简述:
ArrayList,Vector 底层是由数组实现,LinkedList 底层是由双线链表实现,从底层的实现可以得出它们的性能问题,
ArrayList,Vector 插入速度相对较慢,查询速度相对较快,而LinkedList 插入速度较快,而查询速度较慢。
再者由于 Vevtor 使用了线程安全锁,所以ArrayList 的运行效率高于 Vector。
三、总结。
问题解决了,心情就舒服多了,就像bug一样,解决的bug愈多,能力和经验就会增加,但是一旦没有得到合理的解决,嘴里的肉就不香了!
小编会持续输出更多干货文章来回报大家的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。