真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java經(jīng)典面試題集錦(七)

一、說(shuō)一下ArrayList 和 Vector 的區(qū)別

合山網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站開(kāi)發(fā)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司于2013年開(kāi)始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

(更過(guò)面試題推薦:java面試題)

1、同步性:Vector是線程安全的,用synchronized實(shí)現(xiàn)線程安全,而ArrayList是線程不安全的,如果只有一個(gè)線程會(huì)訪問(wèn)到集合,那最好使用ArrayList,因?yàn)樗豢紤]線程安全,效率會(huì)高些;

如果有多個(gè)線程會(huì)訪問(wèn)到集合,那最好是使用Vector,因?yàn)椴恍枰覀冊(cè)偃タ紤]和編寫(xiě)線程安全的代碼。

2、數(shù)據(jù)容量增長(zhǎng):二者都有一個(gè)初始容量大小,采用線性連續(xù)存儲(chǔ)空間,當(dāng)存儲(chǔ)的元素的個(gè)數(shù)超過(guò)了容量時(shí),就需要增加二者的存儲(chǔ)空間,Vector增長(zhǎng)原來(lái)的一倍,ArrayList增加原來(lái)的0.5倍。

二、為什么ArrayList線程不安全

對(duì)ArrayList進(jìn)行添加元素的操作的時(shí)候是分兩個(gè)步驟進(jìn)行的,即第一步先在object[size]的位置上存放需要添加的元素;第二步將size的值增加1。

由于這個(gè)過(guò)程在多線程的環(huán)境下是不能保證具有原子性的,因此ArrayList在多線程的環(huán)境下是線程不安全的。

(相關(guān)教程推薦:java入門教程)

三、HashMap、LinkedHashMap、TreeMap三者之間的區(qū)別是什么?

1、HashMap是一個(gè)最常用的Map,它根據(jù)鍵的hashCode值存儲(chǔ)數(shù)據(jù),根據(jù)鍵可以直接獲取它的值,具有很快的訪問(wèn)速度。HashMap最多只允許一條記錄的鍵為null,不允許多條記錄的值為null。

HashMap不支持線程的同步,即任一時(shí)刻可以有多個(gè)線程同時(shí)寫(xiě)HashMap,可能會(huì)導(dǎo)致數(shù)據(jù)的不一致。如果需要同步,可以用Collections.synchronizedMap(HashMap map)方法使HashMap具有同步的能力。

2、Hashtable與HashMap類似,不同的是:它不允許記錄的鍵或者值為空;它支持線程的同步,即任一時(shí)刻只有一個(gè)線程能寫(xiě)Hashtable,然而,這也導(dǎo)致了Hashtable在寫(xiě)入時(shí)會(huì)比較慢。

3、LinkedHashMap保存了記錄的插入順序,在用Iteraor遍歷LinkedHashMap時(shí),先得到的記錄肯定是先插入的。在遍歷的時(shí)候會(huì)比HashMap慢。有HashMap的全部特性。

4、TreeMap能夠把它保存的記錄根據(jù)鍵排序,默認(rèn)是按升序排序,也可以指定排序的比較器。當(dāng)用Iteraor遍歷TreeMap時(shí),得到的記錄是排過(guò)序的。TreeMap的鍵和值都不能為空。

四、如何去掉一個(gè) Vector 集合中重復(fù)的元素?

通過(guò)Vector.contains()方法判斷是否包含該元素,如果沒(méi)有包含就添加到新的集合當(dāng)中,適用于數(shù)據(jù)較小的情況下。

還有一種簡(jiǎn)單的方式,遍歷Vector,放入set、SortdSet、HashSet等。

(視頻教程推薦:java視頻教程)

五、List、Map、Set 三個(gè)接口,在存取元素時(shí)各有什么特點(diǎn)?

1、Set里面不允許有重復(fù)的元素

存元素:

add方法有一個(gè)boolean的返回值,當(dāng)集合中沒(méi)有某個(gè)元素,此時(shí)add方法可成功加入該元素時(shí),則返回true;當(dāng)集合含有與某個(gè)元素equals相等的元素時(shí),此時(shí)add方法無(wú)法加入該元素,返回結(jié)果為false。

取元素:

沒(méi)法說(shuō)取第幾個(gè),只能以Iterator接口取得所有的元素,再逐一遍歷各個(gè)元素。

2、List表示有先后順序的集合

存元素:

多次調(diào)用add(Object)方法時(shí),每次加入的對(duì)象按先來(lái)后到的順序排序,也可以插隊(duì),即調(diào)用add(int index,Object)方法,就可以指定當(dāng)前對(duì)象在集合中的存放位置。

取元素:

方法1:Iterator接口取得所有,逐一遍歷各個(gè)元素。

方法2:調(diào)用get(index i)來(lái)明確說(shuō)明取第幾個(gè)。使用此接口能夠精確的控制每個(gè)元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似于數(shù)組下標(biāo))來(lái)訪問(wèn)List中的元素,這類似于Java的數(shù)組。

3、Map是雙列的集合

存元素:

用put方法,put(obj key,obj value),每次存儲(chǔ)時(shí),要存儲(chǔ)一對(duì)key/value,不能存儲(chǔ)重復(fù)的key,這個(gè)重復(fù)的規(guī)則也是按equals比較相等。

取元素:

用get(Object key)方法根據(jù)key獲得相應(yīng)的value。也可以獲得所有的key的集合,還可以獲得所有的value的集合,還可以獲得key和value組合成的Map.Entry對(duì)象的集合。

List以特定次序來(lái)持有元素,可有重復(fù)元素;Set 無(wú)法擁有重復(fù)元素,內(nèi)部排序;Map 保存key-value值,value可多值。
名稱欄目:java經(jīng)典面試題集錦(七)
鏈接分享:http://weahome.cn/article/chddid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部