meta|Java集合面试题看这篇就够了( 九 )

\t插入队首\t\t\taddFirst(E e)\t\t\tofferFirst(E e)\t\t插入队尾\t\t\taddLast(E e)\t\t\tofferLast(E e)\t\t删除队首\t\t\tremoveFirst()\t\t\tpollFirst()\t\t删除队尾\t\t\tremoveLast()\t\t\tpollLast()\t\t查询队首元素\t\t\tgetFirst()\t\t\tpeekFirst()\t\t查询队尾元素\t\t\tgetLast()\t\t\tpeekLast()除此之外 。Deque 还提供有 push() 和 pop() 等其他方法 , 可用于模拟栈 。
29.说说ArrayDeque 与 LinkedList 的区别?ArrayDeque 和 LinkedList 都实现了 Deque 接口 , 两者都具有队列的功能 , 也都可以实现栈 。 连着区别:

  • ArrayDeque 是基于 可变长的数组和双指针 来实现 , 而 LinkedList 则通过 链表 来实现 。
  • ArrayDeque 不支持存储 NULL 数据 , 但 LinkedList 支持 。
  • ArrayDeque 是在 JDK1.6 才被引入的 , 而LinkedList 早在 JDK1.2 时就已经存在 。
  • ArrayDeque 插入时可能存在扩容过程 不过均摊后的插入操作依然为 O(1) 。 虽然 LinkedList 不需要扩容 , 但是每次插入数据时均需要申请新的堆空间 , 均摊性能相比更慢 。
从性能的角度上 , 选用 ArrayDeque 来实现队列要比 LinkedList 更好 。
30.说一下 HashSet、LinkedHashSet 和 TreeSet 三者的异同?HashSet 、 LinkedHashSet 和 TreeSet 都是 Set 接口的实现类 ,都能保证元素唯一 , 并且都不是线程安全的  。 他们的不同点:
  • HashSet、LinkedHashSet 和 TreeSet 的主要区别在于底层数据结构不同:
    1. HashSet 的底层数据结构是 哈希表 (基于 HashMap 实现)
    2. LinkedHashSet 的底层数据结构是 链表和哈希表  , 元素的插入和取出顺序满足 FIFO
    3. TreeSet 底层数据结构是 红黑树  , 元素是有序的 , 排序的方式有自然排序和定制排序
    4. 底层数据结构不同又导致这三者的应用场景不同:
      HashSet
      LinkedHashSet
      TreeSet

最后成功复习了 , 有没有收获满满 , 哈哈哈!加油 , 不管生活多么艰难 , 每天进步一点点 , 总有一天一切都会好起来的!!!
我也为大家整理了一套2022Java面试题 , 需要的小伙伴们可以私信【面试】领取