Java集合面试题

1.ArrayList和linkedList有什么区别?

ArrayList:基于动态数组,连续内存存储,适合下标访问。扩容机制:因数组长度固定,数据超出数组长度时会建立新数组,如果不是尾部插入法还会涉及到元素的移动,使用尾部插入法并指定初始容量可以极大的提高性能,甚至超过LinkedList。

LinkedList:基于链表,可以储存在分散的内存中,适合对元素进行插入或删除等操作,不适合查询,因为需要逐一遍历,遍历LinkedList必须使用iterator,不能使用for循环,因为每次通过for循环体get(i)获取某一数据时都会对list进行重新遍历,性能消耗极大。

27. ArrayList 和 Vector 的区别是什么?

线程安全:Vector 使用了 Synchronized 来实现线程同步,是线程安全的,
而 ArrayList 是非线程安全的。
性能:ArrayList 在性能方面要优于 Vector。
扩容:ArrayList 和 Vector 都会根据实际的需要动态的调整容量,只不过在
Vector 扩容每次会增加 1 倍,而 ArrayList 只会增加 50%。

28. Array 和 ArrayList 有何区别?

A rray 可以存储基本数据类型和对象,ArrayList 只能存储对象。
Array 是指定固定大小的,而 ArrayList 大小是自动扩展的。
Array 内置方法没有 ArrayList 多,比如 addAll、removeAll、iteration 等
方法只有 ArrayList 有。

30. 哪些集合类是线程安全的?

Vector、Hashtable、Stack 都是线程安全的,而像 HashMap 则是非线程安全
的,不过在 JDK 1.5 之后随着 Java. util. concurrent 并发包的出现,它们也有
了 自 己 对 应 的 线 程 安 全 类 , 比 如
HashMap 对 应 的 线 程 安 全 类 就 是
ConcurrentHashMap。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值