一.HashSet特点:

    1.HashSet中不能有相同的元素,可以有一个Null元素,存入的元素是无序的。

    2.HashSet如何保证唯一性?

    1).HashSet底层数据结构是哈希表,哈希表就是存储唯一系列的表,而哈希值是由对象的hashCode()方法生成。

    2).确保唯一性的两个方法:hashCode()和equals()方法。

    3.添加、删除操作时间复杂度都是O(1)。

    4.非线程安全

    二.LinkedHashSet
    特点:

    1.LinkedHashSet中不能有相同元素,可以有一个Null元素,元素严格按照放入的顺序排列。

    2.LinkedHashSet如何保证有序和唯一性?

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

    2).链表保证了元素的有序即存储和取出一致,哈希表保证了元素的唯一性。

    3.添加、删除操作时间复杂度都是O(1)。

    4.非线程安全

    三.TreeSet
    特点:

    1.TreeSet是中不能有相同元素,不可以有Null元素,根据元素的自然顺序进行排序。

    2.TreeSet如何保证元素的排序和唯一性?

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

    3.添加、删除操作时间复杂度都是O(log(n))

    4.非线程安全

    四.总结:
    通过以上特点可以分析出,三者都保证了元素的唯一性,如果无排序要求可以选用HashSet;如果想取出元素的顺序和放入元素的顺序相同,那么可以选用LinkedHashSet。如果想插入、删除立即排序或者按照一定规则排序可以选用TreeSet。
    ————————————————
    版权声明:本文为CSDN博主「享叔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/StemQ/article/details/66477615