1、列舉幾個Java Collection類庫中的常用類 此處應(yīng)該有Collection類
Collection是java.util 中的一個接口。繼承自Iterable。
子接口:List、Set、Queue...
實現(xiàn)類:ArrayList、LinkedList、HashSet、TreeSet、Vector、Stack
?其他相關(guān)類:Iterator、TreeMap、HashTable、HashMap Collection接口是最基本的集合接口,它不提供直接的實現(xiàn),Java SDK提供的類都是繼承自Collection的"子接口" 如List和Set。
Collection所代表的是一種規(guī)則,它所包含的元素都必須遵循一條或者多條規(guī)則。 如有些允許重復(fù)而有些則不能重復(fù)、有些必須要按照順序插入而有些則是散列,有些支持排序但是有些則不支持。
2、List、Set、Map是否都繼承自Collection接口?
List、Set繼承自Collection接口,而Map不是。
(1)List 所代表的是有序的Collection。實現(xiàn)List接口的集合主要有:ArratList、LinkedList、Vector、Stack。
(2) Set是一種不包括重復(fù)元素的Collection。實現(xiàn)了Set接口的集合有:EnumSet、HashSet、TreeSet。
(3)Map與List、Set接口不同,它是由一系列鍵值對組成的集合,提供了key到Value的映射。同時它也沒有繼承Collection。 實現(xiàn)map的有:HashMap、TreeMap、HashTable、Properties、EnumMap。
Java初高級一起學(xué)習(xí)分享,共同學(xué)習(xí)才是最明智的選擇,喜歡的話可以我的學(xué)習(xí)群64弍46衣3凌9,或加資料群69似64陸0吧3(進群備注平臺名)
3、HashMap和Hashtable的區(qū)別 需查看源碼。
1、歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現(xiàn) 。
2、同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的 。
3、值:只有HashMap可以讓你將空值作為一個表的條目的key或value 。 1.HashTable的方法是同步的,在方法的前面都有synchronized來同步,HashMap未經(jīng)同步,所以在多線程場合要手動同步 2.HashTable不允許null值(key和value都不可以) ,HashMap允許null值(key和value都可以)。 3.HashTable有一個contains(Object value)功能和containsValue(Object value)功能一樣。
4.HashTable使用Enumeration進行遍歷,HashMap使用Iterator進行遍歷。
5.HashTable中hash數(shù)組默認(rèn)大小是11,增加的方式是 old*2+1。HashMap中hash數(shù)組的默認(rèn)大小是16,而且一定是2的指數(shù)。
?6.哈希值的使用不同,HashTable直接使用對象的hashCode,代碼是這樣的: int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; 而HashMap重新計算hash值,而且用與代替求模:
提問/互動請留言,可直接在最底右下方"寫留言即可" 如果覺得寫得不錯請點擊“訂閱”,每天更新全新的內(nèi)容! 你們的喜歡和關(guān)注就是我最大的動力支撐!??!