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