黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 10道常考Java集合面試題(附答案)

10道常考Java集合面試題(附答案)

更新時間:2020-10-20 16:59:14 來源:動力節點 瀏覽6629次

在java程序員崗位的面試中,面試題是一定缺少不了的,會通過面試的方式來考察面試者的java專業知識。在面試前,一定要做好各種java基礎知識的功課,其中 java集合面試題是做的必要準備之一,集合屬于java知識框架中的核心內容,需要大家好好學習。下面整理了10道常考java集合面試題,大家可以用來自測集合方面的基礎知識掌握的怎么樣。

image.png

1、Java集合框架是什么?說出集合框架的一些優點?

答:每種編程語言中都有集合,最初的Java版本包含幾種集合類:Vector、Stack、HashTable和Array。隨著集合的廣泛使用,Java1.2提出了囊括所有集合接口、實現和算法的集合框架。

在保證線程安全的情況下使用泛型和并發集合類,Java已經經歷了很久。它還包括在Java并發包中,阻塞接口以及它們的實現。集合框架的部分優點如下:

(1)使用核心集合類降低開發成本,而非實現我們自己的集合類。

(2)隨著使用經過嚴格測試的集合框架類,代碼質量會得到提高。

(3)通過使用JDK附帶的集合類,可以降低代碼維護成本。

(4)復用性和可操作性。

2、集合框架中的泛型有什么優點?

答:Java1.5引入了泛型,所有的集合接口和實現都大量地使用它。泛型允許我們為集合提供一個可以容納的對象類型,因此,如果你添加其它類型的任何元素,它會在編譯時報錯。這避免了在運行時出現ClassCastException,因為你將會在編譯時得到報錯信息。

泛型也使得代碼整潔,我們不需要使用顯式轉換和instanceOf操作符。它也給運行時帶來好處,因為不會產生類型檢查的字節碼指令。

3、HashMap和Hashtable的區別是什么?

答:HashMap和Hashtable都實現了Map接口,并且都是key-value的數據結構。它們的不同點主要在三個方面:

第一,Hashtable是Java1.1的一個類,它基于陳舊的Dictionary類。而HashMap是Java1.2引進的Map接口的一個實現。

第二,Hashtable是線程安全的,也就是說是線程同步的,而HashMap是線程不安全的。也就是說在單線程環境下應該用HashMap,這樣效率更高。

第三,HashMap允許將null值作為key或value,但Hashtable不允許(會拋出NullPointerException)。

4、List和Map區別?

答:在數據結構方面,List存儲的是單列數據的集合,而Map存儲的是key、value類型的數據集合。在數據存儲方面,List存儲的數據是有序且可以重復的,而Map中存儲的數據是無序且key值不能重復(value值可以重復)。

image.png

5、List、Map、Set三個接口,存取元素時,各有什么特點?

答:List與Set具有相似性,它們都是單列元素的集合,所以,它們有一個功共同的父接口,叫Collection。Set里面不允許有重復的元素,所謂重復,即不能有兩個相等(注意,不是僅僅是相同)的對象 ,即假設Set集合中有了一個A對象,現在我要向Set集合再存入一個B對象,但B對象與A對象equals相等,則B對象存儲不進去。所以,Set集合的add方法有一個boolean的返回值,當集合中沒有某個元素,此時add方法可成功加入該元素時,則返回true,當集合含有與某個元素equals相等的元素時,此時add方法無法加入該元素,返回結果為false。Set取元素時,沒法說取第幾個,只能以Iterator接口取得所有的元素,再逐一遍歷各個元素。

List表示有先后順序的集合, 注意,不是那種按年齡、按大小、按價格之類的排序。當我們多次調用add(Obj e)方法時,每次加入的對象就像火車站買票有排隊順序一樣,按先來后到的順序排序。有時候,也可以插隊,即調用add(int index,Obj e)方法,就可以指定當前對象在集合中的存放位置。一個對象可以被反復存儲進List中,每調用一次add方法,這個對象就被插入進集合中一次,其實,并不是把這個對象本身存儲進了集合中,而是在集合中用一個索引變量指向這個對象,當這個對象被add多次時,即相當于集合中有多個索引指向了這個對象,如圖x所示。List除了可以以Iterator接口取得所有的元素,再逐一遍歷各個元素之外,還可以調用get(index i)來明確說明取第幾個。

Map與List和Set不同,它是雙列的集合,其中有put方法,定義如下:put(obj key,obj value),每次存儲時,要存儲一對key/value,不能存儲重復的key,這個重復的規則也是按equals比較相等。取則可以根據key獲得相應的value,即get(Object key)返回值為key 所對應的value。另外,也可以獲得所有的key的結合(map.keySet()),還可以獲得所有的value的結合(map.values()),還可以獲得key和value組合成的Map.Entry對象的集合(map.entrySet())。

6、Java集合框架的基礎接口有哪些?

答:Collection為集合層級的根接口。一個集合代表一組對象,這些對象即為它的元素。Java平臺不提供這個接口任何直接的實現。

Set是一個不能包含重復元素的集合。這個接口對數學集合抽象進行建模,被用來代表集合,就如一副牌。

List是一個有序集合,可以包含重復元素。你可以通過它的索引來訪問任何元素。List更像長度動態變換的數組。

Map是一個將key映射到value的對象.一個Map不能包含重復的key:每個key最多只能映射一個value。

一些其它的接口有Queue、Dequeue、SortedSet、SortedMap和ListIterator。

7、為什么Map接口不繼承Collection接口?

答:盡管Map接口和它的實現也是集合框架的一部分,但Map不是集合,集合也不是Map。因此,Map繼承Collection毫無意義,反之亦然。如果Map繼承Collection接口,那么元素去哪兒?Map包含key-value對,它提供抽取key或value列表集合的方法,但是它不適合“一組對象”規范。

8、Iterater和ListIterator之間有什么區別?

答:(1)我們可以使用Iterator來遍歷Set和List集合,而ListIterator只能遍歷List;(2)Iterator只可以向前遍歷,而LIstIterator可以雙向遍歷;(3)ListIterator從Iterator接口繼承,然后添加了一些額外的功能,比如添加一個元素、替換一個元素、獲取前面或后面元素的索引位置。

9、集合框架中的泛型有什么優點?

答:Java1.5引入了泛型,所有的集合接口和實現都大量地使用它。泛型允許我們為集合提供一個可以容納的對象類型,因此,如果你添加其它類型的任何元素,它會在編譯時報錯。這避免了在運行時出現ClassCastException,因為你將會在編譯時得到報錯信息。泛型也使得代碼整潔,我們不需要使用顯式轉換和instanceOf操作符。它也給運行時帶來好處,因為不會產生類型檢查的字節碼指令。

10、Map接口提供了哪些不同的集合視圖?

答:Map接口提供三個集合視圖:

(1)Set keyset():返回map中包含的所有key的一個Set視圖。集合是受map支持的,map的變化會在集合中反映出來,反之亦然。當一個迭代器正在遍歷一個集合時,若map被修改了(除迭代器自身的移除操作以外),迭代器的結果會變為未定義。集合支持通過Iterator的Remove、Set.remove、removeAll、retainAll和clear操作進行元素移除,從map中移除對應的映射。它不支持add和addAll操作。

(2)Collection values():返回一個map中包含的所有value的一個Collection視圖。這個collection受map支持的,map的變化會在collection中反映出來,反之亦然。當一個迭代器正在遍歷一個collection時,若map被修改了(除迭代器自身的移除操作以外),迭代器的結果會變為未定義。集合支持通過Iterator的Remove、Set.remove、removeAll、retainAll和clear操作進行元素移除,從map中移除對應的映射。它不支持add和addAll操作。

(3)Set> entrySet():返回一個map鐘包含的所有映射的一個集合視圖。這個集合受map支持的,map的變化會在collection中反映出來,反之亦然。當一個迭代器正在遍歷一個集合時,若map被修改了(除迭代器自身的移除操作,以及對迭代器返回的entry進行setValue外),迭代器的結果會變為未定義。集合支持通過Iterator的Remove、Set.remove、removeAll、retainAll和clear操作進行元素移除,從map中移除對應的映射。它不支持add和addAll操作。

以上就是今天為大家整理的java集合面試題,題目都是比較基礎的,也是在面試時有很大幾率出現的,所以大家務必要掌握這10道java集合面試題中所包含的知識點,遇到不會的模糊內容,要及時通過專業書或者java視頻教程的方式來搞懂不明白的地方,當然要通過一家大型互聯網公司的面試,光靠java集合面試題是不夠的,動力節點匯總的史上最全的java面試題或許能給你相應的幫助,希望大家可以順利通過面試,

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 毛片网站有哪些 | 亚洲国产日韩在线观看 | 视频日韩p影院永久免费 | 成a人v欧美综合天堂 | 午夜影视福利 | 亚洲国产高清视频 | 夜夜操夜夜爱 | 丰满大屁股美女一级毛片 | 国产成人在线视频观看 | 成人免费视频在 | 中文亚洲日韩欧美 | 黄色大片在线看 | 天天狠狠色噜噜 | 国产成人19禁在线观看 | 黄色小视频在线观看 | 免费人成网站在线高清 | 国产精品久久久亚洲第一牛牛 | 日本国产美国日韩欧美mv | 性欧美videofree另类 | 99热在线免费播放 | 欧美精品首页 | 狠狠澡夜夜澡人人爽 | 午夜叉| 天天宗合网| 波多洁野衣一二区三区 | 国产成人毛片 | 久久最新免费视频 | 国产亚洲欧美日韩综合另类 | 亚洲欧美日韩v中文在线 | 天堂在线链接 | 日本黄区| 亚洲欧美日韩国产精品26u | 超级碰人人 | 成年18网站免费视频网站 | 亚洲va精品中文字幕动漫 | 国产综合激情在线亚洲第一页 | 亚洲视频在线视频 | 欧美性精品hd在线观看 | 久久精品视频免费播放 | 污污视频网站免费 | 国产精品丝袜在线观看 |