Java基础之集合

一、集合

1、Collection(单列集合)

        List(有序,可重复)

        ArrayList

                底层数据结构是数组,查询快,增删慢

                线程不安全,效率高

        Vector

                底层数据结构是数组,查询快,增删慢

                线程安全,效率低

        LinkedList

                底层数据结构是链表,查询慢,增删快

                线程不安全,效率高

        Set(无序,唯一)

                HashSet

                        底层数据结构是哈希表

                        哈希表依赖两个方法:hashCode()和equals()

                        执行顺序:

                        首先判断hashCode()值是否相同

                                是:继续执行equals(),看其返回值

                                        是ture:说明元素重复,不添加

                                        是false:就直接添加到集合

                                否:就直接添加到集合

                        最终:自动生成hashCode()和equals()即可

                        LinkedHashSet

                                底层数据结构由链表和哈希表组成

                                由链表保证元素有序,由哈希表保证元素唯一

                TreeSet

                        底层数据结构是红黑树(是一种自平衡的二叉树)

                        如何保证元素唯一性呢?

                                根据比较的返回值是否为0来决定

                        如何保证元素的排序呢?

                                自然排序(元素具备比较性)

                                        让元素所属的类实现Comparable接口

                                比较器排序(集合具备比较性)

                                        让集合接受一个Comparator的实现类对象

2、Map(双列集合)

        Map集合的数据结果仅仅针对键有效,与值无关

        存储的是键值对形式的元素,键唯一,值可重复

        HashMap

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

                    哈希表依赖两个方法:hashCode()和equals()

                   执行顺序:

                   首先判断hashCode()值是否相同

                            是:继续执行equals(),看其返回值

                                    是ture:说明元素重复,不添加

                                    是false:就直接添加到集合

                            否:就直接添加到集合

                    最终:自动生成hashCode()和equals()即可

                    LinkedHashSet

                        底层数据结构由链表和哈希表组成

                        由链表保证元素有序,由哈希表保证元素唯一

                LinkedHashMap        

                       底层数据结构由链表和哈希表组成

                       由链表保证元素有序,由哈希表保证元素唯一

        Hashtable

                    底层数据结构是哈希表,线程安全,效率低

                    哈希表依赖两个方法:hashCode()和equals()

                   执行顺序:

                   首先判断hashCode()值是否相同

                            是:继续执行equals(),看其返回值

                                    是ture:说明元素重复,不添加

                                    是false:就直接添加到集合

                            否:就直接添加到集合

                    最终:自动生成hashCode()和equals()即可

                    LinkedHashSet

                        底层数据结构由链表和哈希表组成

                        由链表保证元素有序,由哈希表保证元素唯一

                LinkedHashMap        

                       底层数据结构由链表和哈希表组成

                       由链表保证元素有序,由哈希表保证元素唯一

       

        TreeMap

                底层数据结构是红黑树(是一种自平衡的二叉树)

                如何保证元素唯一性呢?

                        根据比较的返回值是否为0来决定

                如何保证元素的排序呢?

                        自然排序(元素具备比较性)

                                让元素所属的类实现Comparable接口

                        比较器排序(集合具备比较性)

                                让集合接受一个Comparator的实现类对象

二、到底使用哪种集合:看需求

是否是键值对形式:

        是:Map

                键是否需要排序:

                        是:TreeMap

                        否:HashMap

                        不知道:HashMap

        否:Collection

                元素是否唯一:

                        是:Set

                                元素是否需要排序:

                                        是:TreeSet

                                        否:HashSet

                        否:List

                                要安全吗:

                                        是:Vector

                                        否:ArrayList或LinkedLst

                                                        增删多:LinkedList

                                                        查询多:ArrayList

                                                        不知道:ArrayList

               

                      

                

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值