java如何把查到的对象集合放入 展示对象list中_Java面试整理-基础篇8.集合1
1.Java中常見(jiàn)的集合及其關(guān)系?
2.ArrayList、LinkedList、Vector的區(qū)別?
1. LinkedList、ArrayList、Vector都是List接口的子類;LinkedList基于雙向鏈表實(shí)現(xiàn),ArrayList、Vector基于數(shù)組實(shí)現(xiàn)。
2. ArrayList采用懶加載模式,在第一次添加元素時(shí),初始化內(nèi)部數(shù)組,初始大小為10,擴(kuò)容大小為原先為1.5倍,采用異步處理,線程不安全,性能較高,在大部分場(chǎng)景下適用。
3. Vector在產(chǎn)生對(duì)象時(shí),初始化一個(gè)大小為10的內(nèi)部數(shù)組、擴(kuò)容為原先的2倍,采用synchronized修飾常用的crud方法,線程安全,性能較低(讀讀互斥)。
4. ArrayList和LinkedList由于實(shí)現(xiàn)原理的不同(雙向鏈表和數(shù)組),常見(jiàn)的插入刪除在尾部時(shí)使用ArrayList比較快,在指定位置的時(shí)候使用LinkedList。
3.通過(guò)Collections.SynchornizedList、Vector的區(qū)別?
1. 通過(guò)Collections.synchronizedList()方法可以將線程不安全的List轉(zhuǎn)成線程安全的List。
2. Collections.SynchronizedList使用了委托(delegation),實(shí)質(zhì)上存儲(chǔ)使用的是構(gòu)造時(shí)傳入的list,只是將list作為底層存儲(chǔ)。Collections.SynchronizedList使用synchronized代碼塊對(duì)mutex對(duì)象加鎖,mutex對(duì)象可以通過(guò)構(gòu)造函數(shù)傳入,也就是可以指定鎖定的對(duì)象。
3. Vector則是對(duì)整個(gè)方法使用了synchronized,所以不能對(duì)同步進(jìn)行細(xì)粒度的控制。而且同步方法加鎖的是this對(duì)象,沒(méi)辦法控制鎖定的對(duì)象。
4. 由于Collections.SynchronizedList比Vector多了一層封裝,所以Vecgor比Collections.SynchronizedList的效率略高。
4.Set和List的區(qū)別?
1. List允許插入重復(fù)的元素,Set不允許重復(fù)元素。
2. List是有序集合,會(huì)保留元素插入時(shí)的順序,Set是無(wú)序集合。
3. List可以通過(guò)下標(biāo)來(lái)訪問(wèn),Set不能。
5.Set是如何保證元素不重復(fù)的?
Set根據(jù)實(shí)現(xiàn)方式主要分為兩大類,HashSet和TreeSet。
1. HashSet是由哈希表實(shí)現(xiàn)的,HashSet中的數(shù)據(jù)是無(wú)序的,可以放入null,但只能放入一個(gè)null,兩者中的值都不能重復(fù),就如數(shù)據(jù)庫(kù)中唯一約束。
2. TreeSet是由二差樹(shù)實(shí)現(xiàn)的,Treeset中的數(shù)據(jù)是自動(dòng)排好序的,不允許放入null值。
6.Collection和Collections的區(qū)別
1. java.util.Collection是一個(gè)集合接口(集合類的頂級(jí)接口)。提供了對(duì)集合對(duì)象進(jìn)行基本操作的通用接口方法。Collection接口在Java類庫(kù)中有很多具體的實(shí)現(xiàn)。Collection接口的意義是為各種具體的集合提供了最大化的統(tǒng)一操作方式,其直接繼承接口有List與Set。
2. Collections則是集合類的一個(gè)工具類,提供了一系列靜態(tài)方法,用于對(duì)集合中元素進(jìn)行排序、搜索以及線程安全等各種操作。
7.Arrays.asList獲得的List使用時(shí)有什么需要注意的?
1. 在使用Arrays.asList()后調(diào)用add,remove這些method時(shí)出現(xiàn)java.lang.UnsupportedOperationException。因?yàn)锳rrays.asList()返回的是java.util.Arrays$ArrayList而不是ArrayList。
2. Arrays$ArrayList和ArrayList都繼承AbstractList,而remove,add等method在AbstractList中默認(rèn)實(shí)現(xiàn)僅有`throw new UnsupportedOperationException();`而不做其他處理。ArrayList繼承AbstractList后重寫(xiě)(override)了這些方法,而Arrays$ArrayList則是保留了默認(rèn)實(shí)現(xiàn)拋出java.lang.UnsupportedOperationException。## 附言
* 轉(zhuǎn)載請(qǐng)注明出處
* 更多文章,請(qǐng)關(guān)注公眾號(hào)《百育科技》,公眾號(hào)會(huì)定期按系列整理文章
總結(jié)
以上是生活随笔為你收集整理的java如何把查到的对象集合放入 展示对象list中_Java面试整理-基础篇8.集合1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql探活_MYSQL探索
- 下一篇: java一年包装_浅谈Java的包装类