1. 程式人生 > >Java集合面試題彙總篇

Java集合面試題彙總篇

> 文章收錄在 GitHub [JavaKeeper](https://github.com/Jstarfish/JavaKeeper) ,N線網際網路開發必備技能兵器譜 作為一位小菜 ”一面面試官“,面試過程中,我肯定會問 Java 集合的內容,同時作為求職者,也肯定會被問到集合,所以整理下 Java 集合面試題 ![](https://i02piccdn.sogoucdn.com/fe487f455e5b1eb6) > 說說常見的集合有哪些吧? > > HashMap說一下,其中的Key需要重寫hashCode()和equals()嗎? > > HashMap中key和value可以為null嗎?允許幾個為null呀? > > HashMap執行緒安全嗎?ConcurrentHashMap和hashTable有什麼區別? > > List和Set說一下,現在有一個ArrayList,對其中的所有元素按照某一屬性大小排序,應該怎麼做? > > ArrayList 和 Vector 的區別 > > list 可以刪除嗎,遍歷的時候可以刪除嗎,為什麼 面嚮物件語言對事物的體現都是以物件的形式,所以為了方便對多個物件的操作,需要將物件進行儲存,集合就是儲存物件最常用的一種方式,也叫容器。 ![img](https://tva1.sinaimg.cn/large/00831rSTly1gdp03vldkkg30hv0gzwet.gif) 從上面的集合框架圖可以看到,Java 集合框架主要包括兩種型別的容器 - 一種是集合(Collection),儲存一個元素集合 - 另一種是圖(Map),儲存鍵/值對對映。 Collection 介面又有 3 種子型別,List、Set 和 Queue,再下面是一些抽象類,最後是具體實現類,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。 集合框架是一個用來代表和操縱集合的統一架構。所有的集合框架都包含如下內容: - **介面**:是代表集合的抽象資料型別。例如 Collection、List、Set、Map 等。之所以定義多個介面,是為了以不同的方式操作集合物件 - **實現(類)**:是集合介面的具體實現。從本質上講,它們是可重複使用的資料結構,例如:ArrayList、LinkedList、HashSet、HashMap。 - **演算法**:是實現集合介面的物件裡的方法執行的一些有用的計算,例如:搜尋和排序。這些演算法被稱為多型,那是因為相同的方法可以在相似的介面上有著不同的實現。 ------ ## 說說常用的集合有哪些吧? Map 介面和 Collection 介面是所有集合框架的父介面: 1. Collection介面的子介面包括:Set、List、Queue 2. List是有序的允許有重複元素的Collection,實現類主要有:ArrayList、LinkedList、Stack以及Vector等 3. Set是一種不包含重複元素且無序的Collection,實現類主要有:HashSet、TreeSet、LinkedHashSet等 4. Map沒有繼承Collection介面,Map提供key到value的對映。實現類主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap 以及 Properties 等 ## ArrayList 和 Vector 的區別 相同點: - ArrayList 和 Vector 都是繼承了相同的父類和實現了相同的介面(都實現了List,有序、允許重複和null) ```java extends Abst