Java集合面试题二

Queue

Queue 与 Deque 的区别

Queue是单端队列,支持先进先出(FIFO)

Deque是双端队列。可以模拟栈。

ArrayDeque 与 LinkedList 的区别

ArrayDeque 和 LinkedList 都实现了 Deque 接口,两者都具有队列的功能,但两者有什么区别呢?

ArrayDeque 是基于可变长的数组和双指针来实现,而 LinkedList 则通过链表来实现。

ArrayDeque 不支持存储 NULL 数据,但 LinkedList 支持。

ArrayDeque 是在 JDK1.6 才被引入的,而LinkedList 早在 JDK1.2 时就已经存在。

ArrayDeque 插入时可能存在扩容过程, 不过均摊后的插入操作依然为 O(1)。

虽然 LinkedList 不需要扩容,但是每次插入数据时均需要申请新的堆空间,均摊性能相比更慢。从性能的角度上,选用 ArrayDeque 来实现队列要比 LinkedList 更好。此外,ArrayDeque 也可以用于实现栈。

什么是PriorityQueue?

priorityQueue与Queue不同的是pQ是按照元素的优先级进出队列的。

pQ是通过二叉堆来实现的。操作也与堆相同,都是从堆顶操作。

什么是 BlockingQueue?

BQ是阻塞队列,当队列中没有数据时就阻塞,常用于生产者-消费者模型。

Map

HashMap 和 Hashtable 的区别

Hash

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值