Set(无序,不可重复)

  • HashSet
    1.底层数据结构是哈希表(是一个元素为链表的数组) + 红黑树
    2.实现Set接口
    3.不保证迭代顺序
    4.允许元素为null
    5.底层实际上是一个HashMap实例
    6.非同步
    7.初始容量非常影响迭代性能(如果看重迭代性能,不要将初始值设的太高)

  • TreeSet
    1.底层数据结构是红黑树(是一个自平衡的二叉树)
    2.实现NavigableSet接口
    3.可以实现排序功能
    4.底层实际上是一个TreeMap实例
    5.非同步

  • LinkedHashSet
    1.底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成。
    2.迭代是有序的
    3.允许为null
    4.底层实际上是一个HashMap+双向链表实例(其实就是LinkedHashMap)…
    5.非同步
    6.性能比HashSet差一丢丢,因为要维护一个双向链表
    7.初始容量与迭代无关,LinkedHashSet迭代的是双向链表

你可能感兴趣的:(Set(无序,不可重复))