Java集合體系總結(jié)

一、Collection(單列集合)

List 有序 可重復(fù)
ArrayList    底層是數(shù)組      查找快,增刪慢     線程不安全,效率高
LinkedList   底層是鏈表      查找慢,增刪快
Vector       底層是數(shù)組      查找快,增刪慢     線程安全,效率低
Set 無序 不可重復(fù)
HashSet    底層是哈希表
                如何保證元素的唯一性
                重寫元素的hashcode和equals方法
                    hashcode相同    判斷equals方法  返回true 不填加
                                                   返回false 添加
                    hashcode不相同  直接添加
                                                
TreeSet    底層是二叉樹
                    如何保證元素的唯一性和排序
                    1、自然排序(元素具備比較特性)   ----實(shí)現(xiàn)Comparable接口
                    2、使用排序器(集合具備比較特性) ---- 實(shí)現(xiàn)Comparator接口

二、Map(雙列集合) 數(shù)據(jù)結(jié)構(gòu)只針對(duì)鍵有效

HashMap    底層是哈希表
                     如何保證鍵的唯一性
                     重寫元素的hashcode和equals方法
                    hashcode相同    判斷equals方法  返回true 不填加
                                                   返回false 添加
                    hashcode不相同  直接添加
                    
TreeMap     底層是二叉樹
                如何保證鍵的唯一性和排序
                1、自然排序(元素具備比較特性)   ----實(shí)現(xiàn)Comparable接口
                2、使用排序器(集合具備比較特性)  ---- 實(shí)現(xiàn)Comparator接口

2、功能

Collection
        add(Object obj) remove(Object obj) contains(obj)  size() iterator()
        List   add(int index,Object obj)  remove(int index)  get(index)  set

Set  
Map 
        put(key,value)  remove(key) get(key) containsValue(value)  containsKey(key)
        get(key) keySet() values() entrySet()

3、遍歷

List 

    1、迭代器      使用迭代器遍歷集合時(shí),不能通過集合對(duì)象去修改集合元素
    2、for循環(huán)
    3、增強(qiáng)for循環(huán)
    僅僅是遍歷集合,任選一種,
    如果要對(duì)集合元素進(jìn)行操作,使用后面兩種
    跟集合索引相關(guān)的操作,使用for循環(huán)
Set
    1、迭代器
    2、增強(qiáng)for循環(huán)
Map
    1、獲取鍵集合,根據(jù)鍵找值
    2、獲取鍵值對(duì)集合,根據(jù)鍵值對(duì)對(duì)象獲取鍵和值

4、怎么選擇

先看有沒有對(duì)應(yīng)關(guān)系(是否需要鍵值對(duì))
有    Map
    是否需要對(duì)鍵排序                  需要  TreeMap
                                    不需要 HashMap
      
    
沒有  Collection
    是否要求元素唯一
      是   Set                    不是 List
        是否對(duì)元素進(jìn)行排序           增刪多,查找少  LinkedList
        是  TreeSet                 增刪少,查找多  ArrayList或者Vector
        不是 HashSet                如果線程安全  Vector
                                    不需要保證線程安全 ArrayList    
  

本文作者: Scorpip_cc
原文博客: Scorpiocc.cn
版權(quán)聲明:轉(zhuǎn)載請(qǐng)注明出處!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容