首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java中各种集合的特点总结

1:集合:

(1) Collection(单列集合)

List(有序,可重复)

ArrayList

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

             线程不安全,效率高

Vector

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

             线程安全,效率低

LinkedList

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

             线程不安全,效率高

Set(无序,唯一)

HashSet

             底层数据结构是哈希表。

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

LinkedHashSet

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

                 由链表保证元素有序。

                 由哈希表保证元素唯一。

TreeSet

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

             如何保证元素唯一性呢?

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

             如何保证元素的排序呢?

                 两种方式

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

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

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

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

(2)Map(双列集合)

     A:Map集合的数据结构仅仅针对键有效,与值无关。

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

HashMap

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

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

             执行顺序:

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

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

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

                         是false:就直接添加到集合

                     否:就直接添加到集合

             最终:

                 自动生成hashCode()和equals()即可

LinkedHashMap

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

                 由链表保证元素有序。

                 由哈希表保证元素唯一。

Hashtable

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

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

             执行顺序:

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

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

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

                         是false:就直接添加到集合

                     否:就直接添加到集合

             最终:

                 自动生成hashCode()和equals()即可

TreeMap

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

             如何保证元素唯一性呢?

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

             如何保证元素的排序呢?

                 两种方式

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

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

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

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

2:到底使用那种集合:

是否是键值对象形式:

是:Map

         键是否需要排序:

             是:TreeMap

             否:HashMap

              不知道,就使用HashMap。

否:Collection

         元素是否唯一:

是:Set

                 元素是否需要排序:

                     是:TreeSet

                     否:HashSet

                      不知道,就使用HashSet

否:List

                 要安全吗:

是:Vector

否:ArrayList或者LinkedList

                         增删多:LinkedList

                         查询多:ArrayList

                          不知道,就使用ArrayList

             不知道,就使用ArrayList

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200827A0HMB900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券