TreeSet和HashSet的不同之处

1、Set的元素是唯一的、无序的
2、HashSet:内部的数据结构是哈希表,底层是采用HashMap实现,是线程不安全的。查询速度较快。集合元素可以是null,但只能放入一个null。
3、TreeSet:采用二叉树(红黑树)的存储结构,底层实现是TreeMap,是线程不安全的。查询速度较慢。可以对Set集合中的元素进行排序。

TreeSet和HashSet如何确定元素的唯一性

1、HashSet:通过元素的hashCode和equals方法。
如果元素的HashCode值相同,才会判断equals是否为true,如果为false则视为不同元素,进行存储;否则就视为相同元素,不存。
如果元素的HashCode值不同,不用调用equals方法,直接存储到HashSet中。

注意:如果元素要存储到HashCode中,必须覆盖hashCode方法和equals方法。

2、TreeSet:两个对象通过CompareTo方法或conpara方法比较没有返回0。

TreeSet如何排序

树中的元素是要默认进行排序操作的,如果是基本数据类型,自动比较,如果是引用类型,需要自定义比较器。
比较器:
1、内部比较器
定义在元素的类中,通过实现comparable接口来实现。
TreeSet和HashSet的不同之处-----如何确定元素的唯一性和TreeSet如何排序

TreeSet和HashSet的不同之处-----如何确定元素的唯一性和TreeSet如何排序

TreeSet的底层实现是采用红-黑树的数据结构,采用这种结构可以从Set中获取有序的序列,但是前提条件是:元素必须实现Comparable接口,该接口中只用一个方法,就是compareTo()方法。
当往Set中插入一个新的元素的时候,首先会遍历Set中已经存在的元素,并调用compareTo()方法,根据返回的结果,决定插入位置。

2、外部比较器
定义在当前类中,通过实现comparator接口来实现,但是要将该比较器传递到集合中
TreeSet和HashSet的不同之处-----如何确定元素的唯一性和TreeSet如何排序
TreeSet和HashSet的不同之处-----如何确定元素的唯一性和TreeSet如何排序

TreeSet和HashSet的不同之处-----如何确定元素的唯一性和TreeSet如何排序
如果两个比较器同时存在,则使用外部比较器。
当使用比较器时,不使用equals方法。

注意:外部比较器可以定义成一个工具类,此时所有需要比较的规则如果一致,可以服用;而内部比较器只有在存储当前对象的时候才可以使用。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-05-23
  • 2021-08-29
  • 2021-06-08
  • 2021-10-23
  • 2022-12-23
猜你喜欢
  • 2021-12-17
  • 2022-12-23
  • 2021-11-07
  • 2022-02-13
  • 2021-11-05
  • 2022-12-23
相关资源
相似解决方案