java集合框架的知識點(diǎn)
接口 集合 元素 java key 閱讀2771
Java集合框架作為Java編程語言的基礎(chǔ),也是Java面試中很重要的一個(gè)知識點(diǎn)盾舌,不管是學(xué)習(xí)還是為了入職隅熙,這一塊都應(yīng)該被小伙伴們充分重視稽煤,這是一些關(guān)于Java集合的重要面試題和答案提供給小伙伴們參考,希望能對小伙伴們的學(xué)習(xí)和入職能有所幫助猛们!
1念脯、Java集合框架是什么?說出一些集合框架的優(yōu)點(diǎn)弯淘?
答:每種編程語言中都有集合绿店,最初的Java版本包含幾種集合類:Vector、Stack、HashTable和Array假勿。隨著集合的廣泛使用借嗽,Java1.2提出了囊括所有集合接口、實(shí)現(xiàn)和算法的集合框架转培。在保證線程安全的情況下使用泛型和并發(fā)集合類恶导,Java已經(jīng)經(jīng)歷了很久。它還包括在Java并發(fā)包中浸须,阻塞接口以及它們的實(shí)現(xiàn)惨寿。集合框架的部分優(yōu)點(diǎn)如下:
(1)使用核心集合類降低開發(fā)成本,而非實(shí)現(xiàn)我們自己的集合類删窒。
(2)隨著使用經(jīng)過嚴(yán)格測試的集合框架類裂垦,代碼質(zhì)量會得到提高。
(3)通過使用JDK附帶的集合類肌索,可以降低代碼維護(hù)成本蕉拢。
(4)復(fù)用性和可操作性。推薦一個(gè)java群诚亚,首先是二二零晕换,中間是一四二,最后是九零六站宗,里面有大量的學(xué)習(xí)資料闸准。
2、集合框架中的泛型有什么優(yōu)點(diǎn)份乒?
答:Java1.5引入了泛型恕汇,所有的集合接口和實(shí)現(xiàn)都大量地使用它。泛型允許我們?yōu)榧咸峁┮粋€(gè)可以容納的對象類型或辖,因此瘾英,如果你添加其它類型的任何元素,它會在編譯時(shí)報(bào)錯颂暇。這避免了在運(yùn)行時(shí)出現(xiàn)ClassCastException缺谴,因?yàn)槟銓诰幾g時(shí)得到報(bào)錯信息。泛型也使得代碼整潔耳鸯,我們不需要使用顯式轉(zhuǎn)換和instanceOf操作符湿蛔。它也給運(yùn)行時(shí)帶來好處,因?yàn)椴粫a(chǎn)生類型檢查的字節(jié)碼指令县爬。
3阳啥、Java集合框架的基礎(chǔ)接口有哪些?
答:Collection為集合層級的根接口财喳。一個(gè)集合代表一組對象察迟,這些對象即為它的元素斩狱。Java平臺不提供這個(gè)接口任何直接的實(shí)現(xiàn)。
Set是一個(gè)不能包含重復(fù)元素的集合扎瓶。這個(gè)接口對數(shù)學(xué)集合抽象進(jìn)行建模所踊,被用來代表集合,就如一副牌概荷。
List是一個(gè)有序集合秕岛,可以包含重復(fù)元素。你可以通過它的索引來訪問任何元素误证。List更像長度動態(tài)變換的數(shù)組继薛。
Map是一個(gè)將key映射到value的對象。一個(gè)Map不能包含重復(fù)的key:每個(gè)key最多只能映射一個(gè)value雷厂。
一些其它的接口有Queue惋增、Dequeue、SortedSet改鲫、SortedMap和ListIterator。
4林束、為何Collection不從Cloneable和Serializable接口繼承像棘?
答:Collection接口指定一組對象,對象即為它的元素壶冒。如何維護(hù)這些元素由Collection的具體實(shí)現(xiàn)決定缕题。例如,一些如List的Collection實(shí)現(xiàn)允許重復(fù)的元素胖腾,而其它的如Set就不允許烟零。很多Collection實(shí)現(xiàn)有一個(gè)公有的clone方法。然而咸作,把它放到集合的所有實(shí)現(xiàn)中也是沒有意義的锨阿。這是因?yàn)镃ollection是一個(gè)抽象表現(xiàn)。重要的是實(shí)現(xiàn)记罚。
當(dāng)與具體實(shí)現(xiàn)打交道的時(shí)候墅诡,克隆或序列化的語義和含義才發(fā)揮作用。所以桐智,具體實(shí)現(xiàn)應(yīng)該決定如何對它進(jìn)行克隆或序列化末早,或它是否可以被克隆或序列化。
在所有的實(shí)現(xiàn)中授權(quán)克隆和序列化说庭,最終導(dǎo)致更少的靈活性和更多的限制然磷。特定的實(shí)現(xiàn)應(yīng)該決定它是否可以被克隆和序列化。
5刊驴、為何Map接口不繼承Collection接口姿搜?
答:盡管Map接口和它的實(shí)現(xiàn)也是集合框架的一部分,但Map不是集合,集合也不是Map痪欲。因此悦穿,Map繼承Collection毫無意義,反之亦然业踢。
如果Map繼承Collection接口栗柒,那么元素去哪兒?Map包含key-value對知举,它提供抽取key或value列表集合的方法瞬沦,但是它不適合“一組對象”規(guī)范。
6雇锡、Iterator是什么逛钻?
答:Iterator接口提供遍歷任何Collection的接口。我們可以從一個(gè)Collection中使用迭代器方法來獲取迭代器實(shí)例锰提。迭代器取代了Java集合框架中的Enumeration曙痘。迭代器允許調(diào)用者在迭代過程中移除元素。
QQ1294644858
發(fā)布于Java 2016-06-27 09:55
評論
已有1條評論
最新
sinat_18193673 2016-06-27 12:11 來自 移動客戶端
除了中間帶點(diǎn)小廣告以外 其他的都還好
回復(fù) 投訴
0
返回頂部
請輸入標(biāo)題
請輸入鏈接地址
請輸入推薦理由
請輸入標(biāo)簽
發(fā)布到 主題 發(fā)布 評論
7
流量商城
【歐洲杯】賽程比分
余額查詢
簽到設(shè)置