hashset和treeset区别是什么?有什么区别?

KLQ 2020-05-19 16:34:55 java常见问答 4793

对于hashset应该很多人都了解吧,那么hashset和treeset的区别又是什么呢?hashset和treeset两者之间各有什么不同?下面一起来了解一下。

首先在Set当中,元素是不能够重复的,是无序的。

这里的无序指的是存入元素的先后顺序和输出元素的先后顺序不一致。

一、HashSet

HashSet内部的数据结构是哈希表,是线程不安全的。

HashSet当中,保证集合中元素是唯一的方法。

通过对象的hashCode和equals方法来完成对象唯一性的判断。

假如,对象的hashCode值是一样的,那么就要用equals方法进行比较。

假如,结果是true,那么就要视作相同元素,不存。

假如,结果是false,那么就视为不同元素,存储。

注意了,假如,元素要存储到HashCode当中,那么就一定要覆盖hashCode方法以及equals方法。

二、TreeSet

TreeSet能够对Set集合当中的元素进行排序,是线程不安全的。

TreeSet当中,判断元素唯一性的方法是依据比较方法的返回结果是否为0,假如是0,那么是相同的元素,不存,假如不是0,那么就是不同的元素,存储。

TreeSet对元素进行排序的方式:

1、元素自身具备比较功能,也就是自然排序,需要实现Comparable接口,并覆盖其compareTo方法。

2、元素自身不具备比较功能,那么就要实现Comparator接口,并覆盖其compare方法。

除此之外,还要注意了,LinkedHashSet是一种有序的Set集合。

也就是其元素的存入和输出的顺序是相同的。

关于hashset和treeset的区别你都了解了吗?假如还有疑惑,可以继续的关注奇Q工具网的常见问题栏目,更多内容可以分享给大家。

推荐阅读:

hashmap的实现原理和hashset的实现原理是什么?

java中HashSet子类依靠什么区分重复元素?