Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

锋哥开始收Java学员啦!

【Java基础】集合框架-面试题 PDF 下载


分享到:
时间:2020-05-13 16:25来源:http://www.java1234.com 作者:小锋  侵权举报
【Java基础】集合框架-面试题 PDF 下载
失效链接处理
【Java基础】集合框架-面试题 PDF 下载

本站整理下载:
提取码:ybx9 
 
 
相关截图:
 
主要内容:
集合框架
1. ArrayList 和 Vector 的区别。
这两个类都实现了 List 接口(List 接口继承了 Collection 接口),他们都是有序集
合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我
们以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是
HashSet 之类的集合的最大不同处,HashSet 之类的集合不可以按索引号去检索其
中的元素,也不允许有重复的元素(本来题目问的与 hashset 没有任何关系,但为了
说清楚 ArrayList 与 Vector 的功能,我们使用对比方式,更有利于说明问题)。接
着才说 ArrayList 与 Vector 的区别,这主要包括两个方面。
 同步性:
Vector 是线程安全的,也就是说是它的方法之间是线程同步的,而 ArrayList 是线
程序不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那
最好是使用 ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问
到集合,那最好是使用 Vector,因为不需要我们自己再去考虑和编写线程安全的代
码。
备注:对于 Vector&ArrayList、Hashtable&HashMap,要记住线程安全的问题,
记住 Vector 与 Hashtable 是旧的,是 java 一诞生就提供了的,它们是线程安全
的,ArrayList 与 HashMap 是 java2 时才提供的,它们是线程不安全的。所以,我
们讲课时先讲老的。
 数据增长:
ArrayList 与 Vector 都有一个初始的容量大小,当存储进它们里面的元素的个数超
过了容量时,就需要增加 ArrayList 与 Vector 的存储空间,每次要增加存储空间
时,不是只增加一个存储单元,而是增加多个存储单元,每次增加的存储单元的个数
在内存空间利用与程序效率之间要取得一定的平衡。Vector 默认增长为原来两倍,而
ArrayList 的增长策略在文档中没有明确规定(从源代码看到的是增长为原来的 1.5
倍)。ArrayList 与 Vector 都可以设置初始的空间大小,Vector 还可以设置增长的
空间大小,而 ArrayList 没有提供设置增长空间的方法。
总结:即 Vector 增长原来的一倍,ArrayList 增加原来的 0.5 倍。
2. 说说 ArrayList,Vector, LinkedList 的存储性能和特性。
ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数
据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组
元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了
synchronized 方法(线程安全)。
通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数
据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插
入速度较快 。
ArrayList 在查找时速度快,LinkedList 在插入与删除时更具优势。
3. 快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么?

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐