hashSet,linkedhashSet,treeSet

87 阅读1分钟

区别

  1. HashSet:

    • 使用哈希表实现,元素无序存储。
    • 通过哈希码来存储和检索元素,因此查找速度很快。
    • 不保证元素的顺序,迭代顺序可能与插入顺序不同。
    • 不允许重复元素,即相同的元素只会存储一个。
    • 不保证元素的顺序性,适合快速查找、去重的场景。
  2. LinkedHashSet:

    • HashSet 的基础上加入了链表来维护元素的插入顺序。
    • 元素插入的顺序会影响元素的迭代顺序,保持了插入顺序。
    • 通过哈希码来存储和检索元素,查找速度很快。
    • 不允许重复元素,即相同的元素只会存储一个。
    • 适合需要保持插入顺序的场景。
  3. TreeSet:

    • 基于红黑树实现,元素按照自然顺序或指定的比较器顺序有序存储。
    • 插入、删除、查找操作的平均时间复杂度为 O(log N),比哈希表的查找更稳定。
    • 元素按照排序顺序迭代,可以快速获取一定范围内的元素。
    • 不允许重复元素,会按照比较器或元素的自然顺序进行去重。
    • 适合需要排序和有序集合的场景。

去重原理

因为 HashMap 不允许重复的键,所以当多次添加相同的元素时,只会保留一个键。通过这种方式,HashSet 实现了对元素的去重。