免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

Java集合精選常見面試題

前言博主只是這篇文章的搬運工,為了加強記憶自己梳理了一遍并擴展了部分內容 。
集合拓展鏈接:集合概述&集合之Collection接口 - 至安 - 博客園 (cnblogs.com)
Java 集合概覽Java 集合,也叫作容器,主要是由兩大接口派生而來:一個是 Collection接口,主要用于存放單一元素;另一個是 Map 接口,主要用于存放鍵值對 。對于Collection 接口,下面又有三個主要的子接口:List、SetQueue
Java 集合框架如下圖所示:

Java集合精選常見面試題

文章插圖
注:圖中只列舉了主要的繼承派生關系,并沒有列舉所有關系 。比方省略了AbstractList,NavigableSet等抽象類以及其他的一些輔助類,如想深入了解,可自行查看源碼
1. 為什么要使用集合?當我們需要保存一組類型相同的數據的時候,我們應該是用一個容器來保存,這個容器就是數組,但是,使用數組存儲對象具有一定的弊端,因為我們在實際開發(fā)中,存儲的數據的類型是多種多樣的,于是,就出現了“集合”,集合同樣也是用來存儲多個數據的 。
數組的缺點是一旦聲明之后,長度就不可變了;同時,聲明數組時的數據類型也決定了該數組存儲的數據的類型;而且,數組存儲的數據是有序的、可重復的,特點單一 。但是集合提高了數據存儲的靈活性,Java 集合不僅可以用來存儲不同類型不同數量的對象,還可以保存具有映射關系的數據
2. 說說 List,Set,Queue,Map 四者的區(qū)別?
  • List(對付順序的好幫手): 存儲的元素是有序的、可重復的 。
  • Set(注重獨一無二的性質): 存儲的元素是無序的、不可重復的 。
  • Queue(實現排隊功能的叫號機): 按特定的排隊規(guī)則來確定先后順序,存儲的元素是有序的、可重復的,操作頭尾數據效率高 。
  • Map(用 key 來搜索的專家): 使用鍵值對(key-value)存儲,類似于數學上的函數 y=f(x),"x" 代表 key,"y" 代表 value,key 是無序的、不可重復的,value 是無序的、可重復的,每個鍵最多映射到一個值 。
3. 集合框架底層數據結構總結先來看一下 Collection 接口下面的集合 。
List
  • ArraylistObject[] 數組
  • VectorObject[] 數組
  • LinkedList: 雙向鏈表(JDK1.6 之前為循環(huán)鏈表,JDK1.7 取消了循環(huán))
Set
  • HashSet(無序,唯一): 基于 HashMap 實現的,底層采用 HashMap 來保存元素
  • LinkedHashSet: LinkedHashSetHashSet 的子類,并且其內部是通過 LinkedHashMap 來實現的 。有點類似于我們之前說的 LinkedHashMap 其內部是基于 HashMap 實現一樣,不過還是有一點點區(qū)別的
  • TreeSet(有序,唯一): 紅黑樹(自平衡的排序二叉樹)
Queue
  • PriorityQueue: Object[] 數組來實現二叉堆
  • ArrayQueue: Object[] 數組 + 雙指針
再來看看 Map 接口下面的集合 。
Map