📜  Java SortedSet接口(1)

📅  最后修改于: 2023-12-03 15:15:57.674000             🧑  作者: Mango

Java SortedSet接口

Java SortedSet接口是一个扩展了Java Set接口的序列化排序集合。它提供了一个有序的集合来存储不重复的元素。

SortedSet 接口继承关系

Java SortedSet 接口是继承自 Java Set 接口的接口。SortedSet 提供了一些额外的操作以使集合元素按顺序进行处理,并且继承了 Set 接口中的方法,如 add, remove, contains 等等。

SortedSet 继承关系

接口方法

SortedSet 接口提供了以下方法:

public interface SortedSet<E extends Comparable<? super E>> extends Set<E> {
   E first();
   E last();
   SortedSet<E> headSet(E toElement);
   SortedSet<E> tailSet(E fromElement);
   SortedSet<E> subSet(E fromElement, E toElement);
   Comparator<? super E> comparator();
}
first()

SortedSet 接口的 first() 方法返回集合中最小的元素,如果集合为空,则抛出 NoSuchElementException 异常。

last()

SortedSet 接口的 last() 方法返回集合中最大的元素,如果集合为空,则抛出 NoSuchElementException 异常。

headSet(E toElement)

SortedSet 接口的 headSet(E toElement) 方法会返回一个新的 SortedSet,其中包含了小于 toElement 的所有元素。toElement 不包括在集合中。如果集合中没有小于 toElement 的元素,则返回一个空集合。

tailSet(E fromElement)

SortedSet 接口的 tailSet(E fromElement) 方法会返回一个新的 SortedSet,其中包含了大于等于 fromElement 的所有元素。fromElement 包括在集合中。如果集合中没有大于等于 fromElement 的元素,则返回一个空集合。

subSet(E fromElement, E toElement)

SortedSet 接口的 subSet(E fromElement, E toElement) 方法会返回一个新的 SortedSet,其中包含了大于等于 fromElement 且小于 toElement 的所有元素。如果 fromElement 或 toElement 不包含在集合中,则抛出 IllegalArgumentException 异常。

comparator()

SortedSet 接口的 comparator() 方法返回对集合中元素的排序所使用的 Comparator。如果该集合使用其自然顺序,则返回 null。

实现类

Java 提供了以下的 SortedSet 实现类:

示例
SortedSet<Integer> sortedSet = new TreeSet<>(Arrays.asList(4, 1, 3, 2, 5));
System.out.println("SortedSet: " + sortedSet);

// 获取最小值和最大值
System.out.println("First: " + sortedSet.first());
System.out.println("Last: " + sortedSet.last());

// 获取小于3的元素
SortedSet<Integer> headSet = sortedSet.headSet(3);
System.out.println("HeadSet: " + headSet);

// 获取大于等于2的元素
SortedSet<Integer> tailSet = sortedSet.tailSet(2);
System.out.println("TailSet: " + tailSet);

// 获取2到5之间的元素
SortedSet<Integer> subSet = sortedSet.subSet(2, 5);
System.out.println("SubSet: " + subSet);

// 获取排序使用的 Comparator
Comparator<Integer> comparator = sortedSet.comparator();
System.out.println("Comparator: " + comparator);

输出结果:

SortedSet: [1, 2, 3, 4, 5]
First: 1
Last: 5
HeadSet: [1, 2]
TailSet: [2, 3, 4, 5]
SubSet: [2, 3, 4]
Comparator: null

总结:Java SortedSet 接口提供了对集合中元素的排序,能够快速查找集合中最大值、最小值以及指定范围的元素。在使用 SortedSet 接口时,需要注意集合元素的比较器,否则可能会导致排序错误。