Java 基础面试之集合
Java 基礎面試之集合
1.Collection接口 的實現類
答:Collection接口有3個子接口:List、Set、Queue
a.List(有序、可重復):的實現類有ArrayList、Vector、LinkList
ArrayList、Vector底層是通過數組實現的,LinkList是通過雙向鏈表實現的。Vector支持線程同步。
b.Set(無序、不可重復)實現類有 HashSet(基于哈希表,可以為null)和TreeSet(基于二叉樹,不可為null)
補充:
Set是如何去重復的?
答:Set在進行add()操作時,會 調用(先)hashCode、(后 這樣會提升查詢速度)equals方法和已經存在的對象比較。
若重復就不會添加。
c. Queue:實現類有 Deque:底層是是數組,有2個標志位指向數組的頭與尾實現雙端隊列。
補充:Map接口沒有顯示繼承類。java.lang,Object.
HashMap是無序的,但是它的子接口類LinkHashMap是有序的。
2.HashMap的key是否可以重復?
答:key的“重復”表現在toString()上,但是本質上它們的hashcode是不一樣的,即引用地址不一樣。
所以Key不可以是重復的。
3. 請問 ArrayList、HashSet、HashMap 是線程安全的嗎?如果不是我想要線程安全的集合怎么辦?
答:都不是線程安全的,集合中只有Vector(不需要知道元素類型)和hashtable是線程安全。
可以通過調用Collections工具類提供API來實現線程同步
4. ArrayList 內部用什么實現的?
答:內部是有Object[] 實現的。(vector同樣如此)
5.集合的種類?
答: 普通集合通常性能最高,但是不保證多線程的安全 性和并發的可靠性。
線程安全集合僅僅是給集合添加了 synchronized 同步鎖,嚴重犧牲了性能,而且對并發的效率就 更低了,
并發集合則通過復雜的策略不僅保證了多線程的安全又提高的并發時的效率。
ConcurrentHashMap、ConcurrentLinkedQueue。
6.集合的實現類
答:List集合有3個實現接口;
List :Vecoter、ArrayList、LinkList
Map:HashMap、LinkHashMap
Set:HashSet、TreeSet、LinkHashSet
HashMap和HashTable的區別:
1.HashMap 對象的 key、value 值均可為 null。 HahTable 對象的 key、value 值均不可為 null。。
2.HashTalle是線程安全的,而HashMap不是線程安全的。
7.Collections工具類提供哪些方法?
a.使用集合中的某一字段,對集合進行排序:Collections.sort()
b. 對集合進行隨機排序: Collection.shuffle(List)
c. 查找指定集合中的元素,返回所查找元素的索引 :Collections.binarySearch(List, “o”);
d.求最大值:max
e.求最小值:min
f.首次/最后一次 出現元素的索引 Collections.indexOfSubList(list, subList)/Collections.lastindexOfSubList(list, subList)
g. 替換批定元素為某元素,若要替換的值存在剛返回true,反之返回false
Collections.replaceAll(list, “a”, “b”)
f. 反轉集合中元素的順序:reverse()
總結
以上是生活随笔為你收集整理的Java 基础面试之集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018-08-20 Windows 1
- 下一篇: java美元兑换,(Java实现) 美元