常用的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 中的元素还是无序的)。

版权声明:本文为Liveforyourself原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。