Java Collection集合面試題

weixin_34234823發表於2018-12-07

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介面,並配備了額外的功能,如新增元素,更換一個元素,能獲得上一個和下一個元素的索引位置。

Java高架構師、分散式架構、高可擴充套件、高效能、高併發、效能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分散式專案實戰學習架構師視訊免費獲取架構群:854180697    加群連結

相關文章