Java面试题-集合框架篇三

21、ArrayList和Vector的区别

这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是与HashSet之类的集合的最大不同处,HashSet之类的集合不可以按索引号去检索其中的元素,也不允许有重复的元素。

ArrayList与Vector的区别主要包括两个方面:.
(1)同步性:

Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程序不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码。

(2)数据增长:

ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,每次要增加存储空间时,不是只增加一个存储单元,而是增加多个存储单元,每次增加的存储单元的个数在内存空间利用与程序效率之间要取得一定的平衡。Vector默认增长为原来两倍,而ArrayList的增长策略在文档中没有明确规定(从源代码看到的是增长为原来的1.5倍)。ArrayList与Vector都可以设置初始的空间大小,Vector还可以设置增长的空间大小,而ArrayList没有提供设置增长空间的方法。

总结:即Vector增长原来的一倍,ArrayList增加原来的0.5倍。

22、HashMap和Hashtable的区别

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

HashMap把Hashtable的contains方法去掉了,改成containsvalue和contain

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
回答: Java集合框架是一组设计良好的接口和类,用于支持对一组对象进行操作。它包括了Collection、Set、List和Map等基本接口和类。Collection接口代表一组对象,每个对象都是它的子元素。Set是不包含重复元素的Collection,而List是有顺序的Collection,可以包含重复元素。Map是可以将键映射到值的对象,键不能重复。\[1\] 在Java集合框架,有一些线程安全的类和接口,如Vector和Hashtable,它们是旧的,从Java一诞生就提供的,因此是线程安全的。而ArrayList和HashMap是在Java2时才提供的,它们是线程不安全的。因此,在使用这些类时需要注意线程安全的问题。\[2\] Java1.5引入了泛型,它允许我们为集合提供一个可以容纳的对象类型。这样,如果我们尝试添加其他类型的元素,编译时会报错,避免了在运行时出现ClassCastException的情况。泛型还使代码更整洁,不需要使用显式转换和instanceOf操作符。此外,泛型还带来了运行时的好处,因为它不会产生类型检查的字节码指令。\[3\] Iterator是Java集合框架的一个接口,它用于遍历集合的元素。它提供了一种统一的方式来访问集合的元素,无论集合的具体实现是什么。Enumeration是Iterator的前身,它是在Java集合框架之前引入的。它们的主要区别在于Iterator支持删除操作,而Enumeration不支持。此外,Iterator还提供了更多的方法,如hasNext()和next(),使得遍历集合更加方便。\[3\] #### 引用[.reference_title] - *1* *2* [Java面试常问集合框架22道面试真题(详解)](https://blog.csdn.net/NObug_369/article/details/106099293)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [10道集合框架面试题(含解析),来看看你会多少](https://blog.csdn.net/weixin_62421895/article/details/126196672)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值