精選集合面試題整理

1. 說說常見的集合有哪些吧?

? ? 答:Map 接口和Collection接口是所有集合框架的父接口

? ? 1. Collection接口的子接口包括:Set接口和List接口

? ? 2. Map 接口的實現(xiàn)類主要有:HashMap、TreeMap、HashTable、ConcurrentHashMap 以及Properties等

? ? 3. Set接口的實現(xiàn)類主要有:HashMap TreeSet LinkedHashSet等

? ? 4.List接口的實現(xiàn)類主要有:ArrayList、LinkedList、Stack 以及Vector等

2. HashMap 與HashTable的區(qū)別?

? ? 1. HashMap沒有考慮同步,是線程不安全的;Hashtable使用了synchronized關鍵字 是線程安全的;

? ? 2.HashMap允許K/V都是null,后者K/V都不允許為null;

? ? 3. HashMap繼承自AbstractMap類;而Hashtable繼承自Dictionary類

3. ArrayList 和 Vector 區(qū)別?

? ? ? ? ?1) 同步性:Vector是線程安全的(同步的),而ArrayList是線程不安全的;

? ? ? ? ? 2)數(shù)據(jù)增長:當需要增長時,Vector默認增長一倍,而ArrayList卻是一半。

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

? ? ? ? List以特點次序來持有元素時,可有重復元素,Set無法擁有重復元素,每部排序。Map保存key-value值,value可多值。

5. set 里的元素不能重復。那么用什么方法來區(qū)分重復與否呢?

? ? ? ? Set里元素是不能重復的,用equals() 方法區(qū)分重復與否。覆蓋equals() 方法用來判斷對象的內(nèi)容是否相同,而"==" 來判斷地址是否相等,用來確定引用值是否是同一對象。

6. HashMap 和 Hashtale的區(qū)別?

? ? ? ? 二者都實現(xiàn)Map接口,是將唯一鍵映射到特點的值上,主要區(qū)別與:

?1. HashMap沒有排序,允許一個null鍵和和多個null值,而HashMap不允許。

?2. HashMap把HashMap的contains方法去掉了,改成containvalue和containKey,因為contains方法容易讓人引起誤解。

3. Hashtable繼承自Dictonary類,HashMap是java1.2引進的Map接口的實現(xiàn)。

4. Hashtable的方法是同步的,而HashMap不是,在多個線程訪問Hashtable時,不需要為它的方法實現(xiàn)同步,而HashMap就必須為之提供外同步,

7. Collection 和 Collections的區(qū)別

? ? Collection是java.uitl 下的接口,他是各種集合的父接口,繼承于它的接口主要有set 和list;Conllecitons是個java.util下的類,是針對集合的幫助類,提供一系列靜態(tài)方法對各種集合的搜索,排序,線程安全化等操作。

線程安全的map

1. synchronizedMap

? ? ? ? 這種是直接使用工具類里面的方法創(chuàng)建SynchronizedMap, 把傳入進行的HashMap對象進行了包裝同步而已,看出SynchronizedMap的實現(xiàn)方式是加了對象鎖,每次對HashMap的操作,都要先獲取mutex的對象鎖才能進入,所以性能也不會比HashTable好到那里去,也不建議使用。

2. ConcurrentHashMap

這個也是最推薦使用的線程安全的Map,也是實現(xiàn)方式最復雜的一個集合,每個版本的實現(xiàn)方式也不一樣,在jdk8之前是使用分段加鎖的一個方式,分成16個桶。每次只加鎖其中一個桶,而在jdk8之后又加入了紅黑樹和CAS算法來實現(xiàn)

原文鏈接?java集合必會14問

8. 遍歷List

```


```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Java集合類可用于存儲數(shù)量不等的對象,并可以實現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)如棧,隊列等,Java集合還可以用于保存具有映射關...
    小徐andorid閱讀 2,081評論 0 13
  • ArrayList實現(xiàn)原理要點概括 參考文獻:http://zhangshixi.iteye.com/blog/6...
    晨光光閱讀 1,162評論 0 1
  • 集合類框架的介紹: ![Java 集合類框架](https://upload-images.jianshu.io/...
    LynnGuo閱讀 801評論 0 1
  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX閱讀 961評論 0 1
  • 在編程中,常常需要集中存放多個數(shù)據(jù)。集合類主要負責保存、盛裝其他數(shù)據(jù),因此集合類也被稱為容器類。所有的集合類都位于...
    一一一二二三閱讀 484評論 0 1

友情鏈接更多精彩內(nèi)容