JAVA基础——图解集合体系

   图解集合,一目了然!
Collection(单列集合) Map(双列集合)
           |--Collection(单列) 
                               |--List(有序,可重复)
                                        |--ArrayList
                                                 底层数据结构是数组,查询快,增删慢。 
                                                 线程不安全,效率高。 
                                         |--Vector
                                                 底层数据结构是数组,查询快,增删慢。 
                                                  线程安全,效率低。
                                         |--LinkedList        

                                                 底层数据结构是链表,查询慢,增删快。 
                                                 线程不安全,效率高。 
                              |--Set(可能无序,肯定唯一)
                                        |--HashSet
                                                 底层数据结构是哈希表。 
                                                 线程不安全,效率高。 

                                                 怎么保证唯一性的呢? 
                                                 它依赖两个方法:hashCode()和equals() 
                                                 顺序: 
                                                           首先判断hashCode()值是否相同。 
                                                           同:继续走equals(),看返回值 
                                                                     如果true:就不添加到集合。 
                                                                     如果false:就添加到集合。 
                                                           不同:就添加到集合。 
                                        |--TreeSet
                                                 底层数据结构是二叉树。 
                                                 线程不安全,效率高。 

                                                 怎么保证唯一性的呢?是根据返回是否是0。 
                                                 怎么保证排序的呢?两种方式 
                                                           自然排序(元素具备比较性) 
                                                                     实现Comparable接口 
                                                           比较器排序(集合具备比较性) 
                                                                     实现Comparator接口
           |--Map(双列 底层结构是针对键有效,跟值无关) 
                               |--HashMap
                                       底层数据结构是哈希表。 
                                       线程不安全,效率高。允许null键和值 

                                       怎么保证唯一性的呢? 
                                       它依赖两个方法:hashCode()和equals() 
                                       顺序: 
                                                 首先判断hashCode()值是否相同。 
                                                 同:继续走equals(),看返回值 
                                                           如果true:就不添加到集合。 
                                                           如果false:就添加到集合。 
                                                 不同:就添加到集合。 
                               |--Hashtable
                                       底层数据结构是哈希表。 
                                        线程安全,效率低。不允许null键和值

                                       怎么保证唯一性的呢? 
                                       它依赖两个方法:hashCode()和equals() 
                                       顺序: 
                                                 首先判断hashCode()值是否相同。 
                                                 同:继续走equals(),看返回值 
                                                           如果true:就不添加到集合。 
                                                           如果false:就添加到集合。 
                                                 不同:就添加到集合。 
                              |--TreeMap
                                       底层数据结构是二叉树。 
                                       线程不安全,效率高。 

                                       怎么保证唯一性的呢?是根据返回是否是0。 
                                       怎么保证排序的呢?两种方式 
                                                 自然排序(元素具备比较性) 
                                                           实现Comparable接口 
                                                 比较器排序(集合具备比较性) 
                                                           实现Comparator接口

Collection( 接口)单列集合
List( 接口)
有序,不唯一
Set( 接口)
可能无序,肯定唯一
Vector( )
ArrayList( )
LinkecList( )
HashSet(类)
TreeSet(类)
1、底层数据结构是数组,查询快,增删慢

2、线程安全,效率低(只有Vector是线程安全的)
1、底层数据结构是数组,查询快,增删慢

2、线程不安全,效率高
1、底层数据结构是链表,增删快,查询慢

2、线程不安全,效率高
1、底层数据结构是哈希表

2、通过重写hashCode() equals() 保证唯一性


3、线程不安全,效率高

(如果元素相同不操作,所以不会覆盖)
1、底层数据结构是二叉树

2、通过判断compareTocompare 方法的返回值是否为 0来判断是否重复

3、排序有两种方案:
实现Comparable接口重写 compareTo方法
实现Comparator接口重写 compare方法

4、线程不安全,效率高

(如果元素相同不操作,所以不会覆盖)
    

    
发布了28 篇原创文章 · 获赞 1 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章