Java集合從菜鳥到大神都要知道的事

集合接口

常見的集合類有這些種:

實現Collection接口的:Set、List以及他們的實現類。

實現Map接口的:HashMap及其實現類,我們常用的有Map及其實現類HashMap,HashTable,List、Set及其實現類ArrayList、HashSet,因為集合類是很大的一塊內容,我們不方便把它的全部內容寫出來,只能慢慢的增加,希望各位讀者有自己想法的,踴躍向我提出。

Java集合從菜鳥到大神都要知道的事

實現Collection接口的類,如Set和List,他們都是單值元素(其實Set內部也是採用的是Map來實現的,只是鍵值一樣,從表面理解,就是單值),不像實現Map接口的類一樣,裡面存放的是key-value(鍵值對)形式的數據。這方面就造成他們很多的不同點,如遍歷方式,前者只能採用迭代或者循環來取出值,但是後者可以使用鍵來獲得值得值。

比較(性能,功能方面)

HashMap和HashTable

相同點:二者都實現了Map接口,因此具有一系列Map接口提供的方法。

不同點:

1、HashMap繼承了AbstractMap,而HashTable繼承了Dictionary。

2、HashMap非線程安全,HashTable線程安全,到處都是synchronized關鍵字。

3、因為HashMap沒有同步,所以處理起來效率較高。

4、HashMap鍵、值都允許為null,HashTable鍵、值都不允許有null。

5、HashTable使用Enumeration,HashMap使用Iterator。

Java集合從菜鳥到大神都要知道的事

這些就是一些比較突出的不同點,實際上他們在實現的過程中會有很多的不同,如初始化的大小、計算hash值的方式等等。畢竟這兩個類包含了很多方法,有很重要的功能,所以其他不同點,請感興趣的讀者自己去看源碼,去研究。筆者推薦使用HashMap,因為她提供了比HashTable更多的方法,以及較高的效率,如果大家需要在多線程環境中使用,那麼用Collections類來做一下同步即可。

Set對每個對象只接受一次,並使用自己內部的排序方法(通常,你只關心某個元素是否屬於Set,而不關心它的順序--否則應該使用List)。

Map同樣對每個元素保存一份,但這是基於"鍵"的,Map也有內置的排序,因而不關心元素添加的順序。

Java集合從菜鳥到大神都要知道的事

如果添加元素的順序對你很重要,應該使用 LinkedHashSet/TreeSet或者LinkedHashMap/TreeMap.

尚學堂立志解決中國教育不公平和低效率問題,幫助千千萬萬被傳統教育方式耽誤的人,傳授實用、前沿的知識,成就學員個人理想,為愛你的人和你愛的人創造美好的生活。尚學堂12大精英團隊+各類實戰項目,真正實現1+1>10的目標效果。幫助學員迅速成長,持久騰飛,成就學員“高富帥”人生。


分享到:


相關文章: