1. 程式人生 > >20個最佳的Java集合框架面試題目

20個最佳的Java集合框架面試題目



1為什麼Map介面不繼承Collection 介面?

· Set是無序集合,並且不允許重複的元素
· List是有序的集合,並且允許重複的元素
· 而Map是鍵值對
· 它被視為是鍵的set和值的set的組合
· Map被設計為鍵值對的集合,所以不需要繼承Collection 介面

2HashMap和Hashtable之間的區別?

· 同步或執行緒安全
· Null鍵和Null值
· 迭代值
· 預設容量大小

3comparable 和 comparator的不同之處?

· comparable介面實際上是出自java.lang包
· 它有一個 compareTo(Object obj)方法來將objects排序


· comparator介面實際上是出自 java.util 包
· 它有一個compare(Object obj1, Object obj2)方法來將objects排序

4如何對Object的list排序?

· 對objects陣列進行排序,我們可以用Arrays.sort()方法
· 如果要對objects的集合進行排序,需要使用Collections.sort()方法

5fail-fast 與 fail-safe 之間的區別?

· Fail fast快速地報告任何的failure。無論何時任何一個問題都會引發 fail fast系統fails
· 在Java Fail fast 迭代器中,迭代objects集合有時會出現併發修改異常,出現這種情況有2個原因


· 如果一個執行緒正在迭代一個集合,而另一個執行緒同時試圖修改這個集合
· 在呼叫remove()方法後,如何我們還試圖去修改集合object

6Iterator、ListIterator 和 Enumeration的區別?

· Enumeration介面在Java1.2版本開始有,所以Enumeration是合法規範的介面。
· Enumeration使用elements()方法
· Iterator對所有Java集合類都有實現
· Iterator使用iterator方法
· Iterator只能往一個方向前進
· ListIterator僅僅對List型別的類實現了
· ListIterator使用listIterator()方法

7Java 中 Set 與 List 有什麼不同?

· Set是一個不允許重複元素存在的集合
· Set沒有索引
· Set僅僅允許一個null值
· Set有類:HashSet、LinkedHashMap、TreeSet
· List有索引
· List允許N個null值
· List可以按插入順序顯示
· List有類:Vector、ArrayList、LinkedList

8arraylist 與 vector 的區別?

· Vector 在Java的第一個版本就引入了,也就是說vector是一個合法規範的類
· ArrayList在Java1.2版本引入的,是Java 集合框架的組成部分
· Vector是同步的
· ArrayList是不同步的

9什麼類實現了List介面?

· ArrayList
· LinkedList
· Vector

10什麼類實現了Set介面?

· HashSet
· LinkedHashSet
· TreeSet

11如何保證一個集合執行緒安全?

· Vector, Hashtable, Properties 和 Stack 都是同步的類,所以它們都執行緒安全的,可以被使用在多執行緒環境中
· 使用Collections.synchronizedList(list)) 方法,可以保證list類是執行緒安全的
· 使用java.util.Collections.synchronizedSet()方法可以保證set類是執行緒安全的。

12是否可以往 TreeSet 或者 HashSet 中新增 null 元素?

· 可以往 hashset 中新增一個 null
· TreeSet 也允許一個 null值

13解釋下Collection的介面繼承關係?


14Iterator符合哪個設計模式?

· Iterator 設計模式

15HashSet 實現了哪個資料結構?

· HashSet 內部實現了hashmap

16為什麼 Collection 不能繼承 Cloneable 和 Serializable?

· List和Set唯一繼承 Collection 介面
· SortedMap 繼承了 Map 介面

17hashCode()和equals()方法的重要性?如何使用它們?

· hashCode() 和 equals() 方法定義在"object"類中
· 如果equals() 方法在比較2個物件時返回true,那麼hashCode()的返回值必須得一樣

18array 和 arraylist 的區別?

· Array類似object集合型別,大小固定
· Arraylist是同質和異質元素的集合

19什麼是 Properties 類?

· Properties 是Hashtable的子類。它被用於維護值的list,其中它們的鍵、值都是String型別

20如何將一個字串轉換為arraylist?

· 使用 arrayList.toArray() 方法

微信公眾號:Javafirst