JAVA基础——图解集合体系

本文图解了集合和映射的基本概念及其在Java中的实现,包括ArrayList、LinkedList、HashSet、TreeSet、HashMap和Hashtable等常用数据结构的特性与使用场景。详细介绍了如何通过重写hashCode()和equals()方法来保证唯一性,并通过实现Comparable或Comparator接口来实现排序。文章还阐述了如何在实际编程中灵活选择合适的数据结构以提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   图解集合,一目了然!
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、线程不安全,效率高

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

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值