Set接口及其实现类特点概述

Set接口

  • Set接口继承了Collection接口的全部方法,没有提供额外的方法。
  • Set集合满足 无序、不重复的特点。

注:这个无序不是说每次遍历Set集合,随机地取出元素。也不是指插入的顺序和遍历得到的顺序不同,而是指Set集合添加元素的方式并不是按数组索引的顺序添加。

HashSet

  • HashSet底层使用HashMap实现。
  • 添加到HashSet的元素需要重写equals方法和hashcode方法。
    Set接口及其实现类特点概述
    Set接口及其实现类特点概述

LinkedHashSet

  • 是HashSet的子类,每个数据节点还维护了两个引用,指示前一个节点和后一个节点。所以遍历LinkedHashSet得到的元素顺序和插入的元素顺序相同。
    Set接口及其实现类特点概述

TreeSet

  • 底层使用红黑树实现。

  • 插入的数据必须是同类对象。

  • TreeSet会确保集合元素处于排序状态。

  • TreeSet的两种排序方法,自然排序和定制排序。

    • 自然排序:元素需要实现Comparable接口,重写compareTo方法。
    • 定制排序:使用TreeSet(Comparator<? super E> comparator)传入一个比较器。
  • TreeSet中元素的不重复性并不是根据equals方法来确定的,而是根据compareTo方法或compare方法中定义的属性的比较规则来决定的。例如A类有name和age两个属性,new B(“甲”,20),new c(“乙”,20),如果只比较了age这个属性,那么B和C对象就不算是重复元素,它们都会被加入到TreeSet。

相关文章: