常用的Java集合与它们的区别

一、集合 List、Set、Map

   1.List 有序, 可重复,允许有 null 值

        (1)ArrayList

        优点: 底层数据结构是数组,查询快,增删慢。
        缺点: 线程不安全,效率高

        (2)LinkedList

        优点: 底层数据结构是链表,查询慢,增删快。
        缺点: 线程不安全,效率高

   2.Set 无序,唯一,不可重复(可以给数据去重)

        (1)HashSet

        底层数据结构是哈希表。(无序,唯一)
        如何来保证元素唯一性?
        依赖两个方法:hashCode()和 equals()

   3.Map(键不允许重复,无序,初始容量是 16,加载因子是 0.75)

        (1)HashMap

        底层数据结构在 JDK1.8 之前的实现方式 数组+链表 ;在 JDK1.8 之后的实现方式是数组+链表或者数值+红黑树
        非线程安全,高效,支持 null 值和 null 键,线程不安全。

        (2)HashTable

        线程安全,低效,不支持 null 值和 null 键;

二、List 和 Set、Map 的区别

        (1)List 和 Set 是存储单列数据的集合;Map 是存储键值对这样的双列数据的集合;
        (2)List 中存储的数据是有顺序的,并且值允许重复;Map 中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的;
        (3)Set 中存储的数据是无顺序的,并且不允许重复,但元素在集合中的位置是由元素的 hashcode 决定,即位置是固定的(Set 集合是根据 hashcode 来进行数据存储的,所以位置是固定的,但是这个位置不是用户可以控制的,所以对于用户来说 set 中的元素还是无序的)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值