

1. Vector用法和ArrayList區別
(1) Vector的特有方法有哪些?
void addElement(E obj) 將指定的組件添加到此向量的末尾,將其大小增加1。
(2) Vector與ArrayList的區別是什么?
①Vector的add()方法是同步方法,ArrayList的add()方法是非同步方法
②Vector擴容每次擴充1倍,ArrayList每次擴充0.5倍
③Vector是在調用構造方法時,直接初始化容量為10,ArrayList是在第一次調用添加方法時,初始化容量為10。
④Vector的版本時JDK1.0開始的,ArrayList是JDK1.2開始的
⑤Vector是線程同步的,安全性高,效率低,
ArrayList是線程非同步的,安全性低,效率高。
2. Map接口_HashMap_Hashtable的用法詳解
(1) Map接口常用的方法有哪些?
①void clear() 從該地圖中刪除所有的映射(可選操作)。
②boolean containsKey(Object key) 如果此映射包含指定鍵的映射,則返回 true 。
③boolean containsValue(Object value) 如果此地圖將一個或多個鍵映射到指定的值,則返回 true 。
④Set<Map.Entry<K,V>> entrySet() 返回此地圖中包含的映射的Set視圖。
⑤V get(Object key) 返回到指定鍵所映射的值,或 null如果此映射包含該鍵的映射。
⑥boolean isEmpty() 如果此地圖不包含鍵值映射,則返回 true 。
⑦Set<K> keySet() 返回此地圖中包含的鍵的Set視圖。
⑧V put(K key, V value) 將指定的值與該映射中的指定鍵相關聯(可選操作)。
⑨void putAll(Map<? extends K,? extends V> m) 將指定地圖的所有映射復制到此映射(可選操作)。
⑩V remove(Object key) 如果存在(從可選的操作),從該地圖中刪除一個鍵的映射。
a.default boolean remove(Object key, Object value) 僅當指定的密鑰當前映射到指定的值時刪除該條目。
b.default V replace(K key, V value) 只有當目標映射到某個值時,才能替換指定鍵的條目。
c.int size() 返回此地圖中鍵值映射的數量。
d
(2) HashMap與Hashtable的異同是什么?
①版本不同HashMap JDK1.2 Hashtable 1.0
②HashMap繼承了AbstractMap,實現了Map接口,Hashtable繼承了Dictionary實現Map接口。
③HashMap允許null值和null鍵,但是null作為key只允許一個,Hashtable非null的鍵和值。
④HashMap是線程不同步的(效率高,安全性低),Hashtable(效率低,安全性高)線程同步。
3. HashMap的底層原理
(1) HashMap的底層數據結構是什么?
散列表
(2) 簡述哈希表的去重原理?
調用equals(…)方法比較元素的內容是否相同,如果相同則不再向鏈表中添加元素。
1. 二叉樹和紅黑樹
(1) 簡述樹的概念和特征?
樹的概念:由一個集合以及在該集合上定義的一種關系構成的。集合中的元素稱為樹的結點,所定義的關系為父子關系。
樹的特征:父子關系在樹的結點之間建立了一個層次結構。樹的結點包含一個數據元素及若干指向其子樹的若干分支。在這種層次結構中有一個結點具有特殊的地位,這個結點稱為該樹的根結點,或簡稱為樹根。
(2) 什么樣的樹被稱為紅黑樹?
①紅黑樹是平衡二叉樹的一種。平衡二叉樹:每個結點的平衡因子都為1,-1,0的二叉排序樹,或者說每個結點的左右子樹的高度最多差1的二叉排序樹。由于紅黑樹也是二叉查找樹,它們當中每一個節點的比較值都必須大于或等于在它的左子樹中的所有節點,并且小于或等于在它的右子樹中的所有節點。這確保紅黑樹運作時能夠快速的在樹中查找給定的值。
②紅黑樹的每個節點上都有存儲位表示結點的顏色,可以是紅或黑。
③每個葉子節點(NIL)是黑色。[注意:這里葉子節點,是指為空(NIL或NULL)的葉子節點!]
④如果一個節點是紅色的,則它的子節點必須是黑色。
⑤從一個節點到該節點的子孫節點的所有路徑上包含相同數目的黑節點。
2. TreeMap的使用和底層實現
(1) TreeMap的常用構造方法有哪些?
①TreeMap() 使用其鍵的自然排序構造一個新的空樹狀圖。
②TreeMap(Comparator<? super K> comparator)
構造一個新的,空的樹圖,按照給定的比較器排序。
③TreeMap(Map<? extends K,? extends V> m)
構造一個新的樹狀圖,其中包含與給定地圖相同的映射,根據其鍵的 自然順序進行排序 。
④TreeMap(SortedMap<K,? extends V> m)
構造一個包含相同映射并使用與指定排序映射相同順序的新樹映射。
(2) TreeMap的底層數據結構是什么?
紅黑樹
3. Set接口_HashSet的用法
(1) Set集合存儲元素的特征?
唯一,無序。
(2) Set接口常用的子類有哪些?
HashSet,LinkedHashSet,TreeSet
4. HashSet底層實現_JDK源碼分析
(1) HashSet的底層數據結構概念?
哈希表,也叫散列表,是根據關鍵碼值(Key value)而直接進行訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。這個映射函數叫做散列函數,存放記錄的數組叫做散列表。由數組+單向鏈接組成其數據結構。
(2) HashSet與HashMap的關系?
底層都是用散列表作為數據結構實現的容器類,一個實現了Set接口,一個實現Map接口。兩者不同在于:
*HashMap*
*HashSet*
HashMap實現了Map接口
HashSet實現了Set接口
HashMap儲存鍵值對
HashSet僅僅存儲對象
使用put()方法將元素放入map中
使用add()方法將元素放入set中
HashMap中使用鍵對象來計算hashcode值
HashSet使用成員對象來計算hashcode值,對于兩個對象來說hashcode可能相同,所以equals()方法用來判斷對象的相等性,如果兩個對象不同的話,那么返回false
HashMap比較快,因為是使用唯一的鍵來獲取對象
HashSet較HashMap來說比較慢
5. TreeSet的使用_JDK源碼分析
(1) TreeSet的底層數據結構是什么?在存儲自定義元素時是通過什么方式去掉重復元素的?
紅黑樹。通過內部或者外部比較器實現comparator接口,compare()方法來去重。
(2) TreeSet集合的特點?
有序(升序),唯一。
6. 泛型
(1) 為什么需要泛型?使用泛型的好處有哪些?
在JDK1.4以前類型不明確:裝入集合的類型都被當做Object對待,從而失去自己的實際類型。從集合中取出時往往需要轉型,效率低,容易產生錯誤。
好處:增強程序的可讀性和安全性。
(2) 泛型分幾類,分列舉例說明?
①泛型類 public class Myclass<T>{}
②泛型接口 public interface MyInterface<T>{}
③泛型方法public viod Mymethod(){}
7. 泛型的高級使用_容器中使用泛型
(1) 泛型的高級應用分為哪兩類?
①泛型的上限:使用關鍵字 extends,表示參數化的類型可能是 所指定的類型或者是此類型的子類
②泛型的下限:使用關鍵字 super 進行聲明,表示參數化的類型 可能是所指定的類型,或者是此類型的父類型,直至 Object 類
(2) 泛型的上限指的是什么含義,請舉例說明?
泛型的上限:使用關鍵字 extends,表示參數化的類型可能是 所指定的類型或者是此類型的子類