Java集合框架圖
Set(集)List(列表)Map(映射)
集合類存放的都是對象的引用劫狠。
1. List集合中對象按照索引位置排序嘉栓,可以有重復(fù)對象碍讨,允許按照對象在集合中的索引位置檢索對象。
2. Set集合中的對象不按照特定的方式排序眶熬,并且沒有重復(fù)對象妹笆,但它的實(shí)現(xiàn)類能對集合中的對象按照特定的方式排序块请。
3.?Map中的每一個元素包含一個鍵和一個值,成對出現(xiàn)拳缠,鍵對象不可以重復(fù)墩新,值對象可以重復(fù)。
Java集合類繼承關(guān)系圖
總結(jié):
List和Set都繼承自Collection接口窟坐,是存儲單列數(shù)據(jù)的集合
1. Set無序不允許元素重復(fù)(不能存放重復(fù)的內(nèi)容)海渊,包括有HashSet和TreeSet兩個主要的實(shí)現(xiàn)類
HashSet:線程不安全,不同步哲鸳,插入刪除速度快臣疑。通過元素的兩個方法hashCode和equals來保證元素的唯一性。
TreeSet:線程不安全徙菠,可以對Set集合中的元素進(jìn)行排序讯沈。通過compareTo或者compare方法來保證元素的唯一性,元素以二叉樹的形式存在婿奔。
2. List有序且允許元素重復(fù)(可以存放重復(fù)的內(nèi)容缺狠,支持null對象),包括有ArrayList萍摊、LinkedList和Vector三個主要的實(shí)現(xiàn)類
List第一次創(chuàng)建的時候儒老,會有一個初始大小,隨著不斷向List中增加元素记餐,當(dāng)List 認(rèn)為容量不夠的時候就會進(jìn)行擴(kuò)容驮樊。Vector缺省情況下自動增長原來一倍的數(shù)組長度,ArrayList增長原來的50%片酝。
ArrayList:線程不安全囚衔,查詢速度快,增刪慢雕沿,通過數(shù)組實(shí)現(xiàn)练湿,更適合檢索和在末尾插入或刪除
LinkedList:鏈表結(jié)果,增刪速度快审轮,查詢和修改值的速度較慢肥哎,通過雙向鏈表實(shí)現(xiàn),更適合從中間插入或刪除
Vector:線程安全疾渣,查找速度慢篡诽,增刪慢(被ArrayList替代),通過數(shù)組實(shí)現(xiàn)
Map的繼承關(guān)系圖
總結(jié):Map也屬于集合系統(tǒng)榴捡,但不是繼承自Collection接口杈女,Map是key對value的映射集合,其中key就是一個集合,key不能重復(fù)达椰,value可以重復(fù)翰蠢。Map是存儲鍵值對這樣的雙列數(shù)據(jù)的集合。
HashMap啰劲、TreeMap和Hashtable是三個主要的實(shí)現(xiàn)類梁沧。
HashMap: 基于hash表的Map接口實(shí)現(xiàn),非線程安全蝇裤,高效廷支,支持null值和null鍵
TreeMap: 對象是按鍵升序排列的。
HashTable: 線程安全猖辫,低效酥泞,不支持null值和null鍵