Java Collection集合面試題(精選)
1、Java集合Collection框架是什麼?列出集合框架的一些好處?
在每一種程式語言都有集合的使用,最初的Java版本包含了幾類集合:向量,堆疊,雜湊表,陣列。但在更大的範圍使用是在Java 1.2中集合框架想出了該組的所有集合介面,實現和演算法。 Java集合的執行緒安全操作和使用泛型和併發集合類等。它還包括阻塞的介面及其實現在Java併發包。
集合框架的好處是:
使用核心集合類,而不需要實現我們自己的集合類,減少了開發工作。
使用經過測試的集合框架類提高程式碼質量。
使用JDK附帶的集合類減少程式碼維護的工作。
可重用性和互操作性
2、泛型集合框架的好處是什麼呢?
Java 1.5中附帶泛型和所有收集介面和介面實現的大量使用。泛型允許我們提供一個集合可以包含Object型別,所以如果你嘗試新增任何其他型別的元素,它會引發編譯時錯誤。這就避免了在執行時丟擲,因為你會得到編譯錯誤。泛型使程式碼更乾淨,因為我們並不需要使用溯型casting和instanceof檢查。它也增加了執行時的好處,因為不生成的做型別檢查位元組碼指令。
3、Java集合框架的基本介面是什麼?
Collection是集合層次的根。一個集合包含一組物件作為其元素。 Java平臺不提供任何直接實現這個介面。
Set 是一個不能包含重複的元素的集合。此介面模型代表數學Set的抽象,用來代表一組Set,如一副撲克牌。
List是有序集合,可以包含重複的元素。您可以從它的索引訪問任何元素。更像是動態長度的陣列列表。
一個Map是一個鍵對映值的物件。一個Map不能包含重複鍵:每個key只能對映一個值。
其他一些介面Queue, Dequeue, Iterator, SortedSet,SortedMap的和listIterator。
4、為什麼要集合不能繼承Cloneable和Serializable介面?
Collection介面指定一組稱為元素的物件。元素如何被組織取決於具體實現。例如,一些LIST實現允許重複的元素,而SET不允許。Collection是一種抽象表示,而克隆和序列化重在執行,應該是在Collection具體實現子類中根據具體元素組織情況來實現。因此,強制在所有實現都要有克隆和序列化是不夠靈活的,具有限制性。
5、為什麼MAP介面不實現Collection介面?
雖然Map介面和它的實現是集合框架的一部分,但是MAP不是集合,而且集合也不是地圖。因此,它實現集合介面沒有任何意義。
6、Iterator是什麼?
Iterator介面提供遍歷集合的方法。從一個集合中使用迭代方法,我們可以得到迭代器例項。迭代器允許呼叫者在迭代過程中從集合中刪除元素。
7、列舉Enumeration 和Iterator介面之間的差異是什麼?
列舉是快迭代兩倍,使用非常少的記憶體。列舉適合基本需求。但Iterator是更安全,因為它總是拒絕其他執行緒修改它正在迭代集合中的物件。
8、為什麼沒有方法像Iterator.add()將元素新增到集合?
這是語義不清,對於迭代一個集合,必須保證迭代的順序。但是請注意,ListIterator確實提供了一個add的操作,而且它保證迭代的順序。
9、為什麼迭代器沒有不用移動游標來直接獲得下一個元素的方法?
它可以基於當前Iterator介面之上實現,但很少使用,沒有意義。
10、Iterator和listIterator之間有什麼不同?
我們可以使用迭代器Iterator遍歷Set和List集合,而ListIterator只可以使用List。
迭代器遍歷只有向前的方向,而ListIterator可以用來在兩個方向遍歷。
ListIterator繼承Iterator介面,並配備了額外的功能,如新增元素,更換一個元素,能獲得上一個和下一個元素的索引位置。
寫在最後:歡迎留言討論,加關注,持續更新!