面试漫谈(五)- 集合篇(二)

Posted by YiBo on December 12, 2020

reference:

https://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=2453144514&idx=2&sn=3b14fa92bd3d129d5c60a2eea0c5869f&scene=21#wechat_redirect

https://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=2453144928&idx=2&sn=9381f2e2ac82013d7f6483a751597d1e&scene=21#wechat_redirect

前记

上篇主要复习了 ArrayList HashMap HashTable CurrentHashMap等,这篇会更加基础,说一说普通的集合

image-20201211213707760

我自己先简单的描述一下这张图,首先最大的接口是 collection,与之相并列的还有 Map ,也就是上篇HashMap的内容。然后还有三个小接口 List Queue Set 去实现 collection

list : ArrayList LinkedList Vector(为何画了×)

  • Vector 加了太多的synchronized 已启用
  • Vector和ArrayList的区别:Vector线程安全 扩容时2倍,ArrayList 扩容1.5倍

Queue:LinkedList Deque=>ArrayDeque Priority Queue

  • Deque 俩端都可以进出

  • 实现普通队列使用 ArrayDeque 效率高,LinkedList会有其他开销

  • 只要不保存Null值,就选ArrayDeque

  • 用 ArrayDeque 实现栈

  • Priority Queue

    是一个完全二叉树

    快速拿到一个数组中最大、最小值 O(1)

Set:HashSet LinkedHashSet SortedSet=>TreeSet