浅谈Java中的Set集合

Java中的集合Collection是集合的顶层父接口,Set为其的子接口之一,而它也是我们经常食用到的集合。
下面就来谈谈Set集合。

Set集合概述



Set集合中的元素特点是:元素不允许重复,即元素唯一。

Set集合的成员方法


HashSet集合


HashSet是Set的一个实现子类,即此类实现Set接口,它由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变,可以理解为元素的存取顺序不一致。HashSet是线程不安全的,此类允许使用 null 元素。

当我们向HashSet中存储元素的时候,HashSet 会调用该对象的hashCode() 方法来得到该对象的 hashCode 值,然后根据 hashCode 值决定该对象在 HashSet 中的存储位置。

HashSet 集合判断两个元素相等的标准:
两个对象通过 hashCode() 方法比较相等,并且两个对象的 equals() 方法返回值也相等。

所以,HashSet中的元素的唯一性是通过元素重写hashCode()和equals()方法来保证的,如果不重写则无法保证元素的唯一性。

我们使用HashSet存储Java提供好的引用类型的对象时,可以不用重写hashcode()方法和equals()方法,因为该类 已经重写了hashcode()方法和equals()方法。
而使用HashSet存储自定义对象的时候,需要先在该类中重写hashcode()方法和equals()方法,否则无法保证HashSet中元素的唯一性。

构造方法

成员方法


LinkedHashSet集合


具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现(链表保证有序,哈希表保证元素唯一)。
此实现与 HashSet 的不同之外在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,即按照将元素插入到 set 中的顺序(插入顺序)进行迭代,即元素的存取顺序一致。注意,插入顺序不受在 set 中重新插入的 元素的影响。

构造方法

成员方法

TreeSet集合



该类是基于 TreeMap 的 NavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。

TreeMap中元素不仅唯一,还可以对元素进行排序。排序有两种方式:

  • 自然顺序排序。使用TreeSet集合进行元素的自然排序,那么对元素有要求,要求该元素必须实现Comparable接口,否则无法进行自然排序。
  • 按照比较器的顺序进行排序。

元素的唯一性则是由compareTo方法的返回值来确定。如果返回0,表示两个元素相等,则不重复存储。

构造方法

成员方法



发布了44 篇原创文章 · 获赞 7 · 访问量 2451

猜你喜欢

转载自blog.csdn.net/Adelagirl/article/details/103051592
今日推荐