位于java.util包的SortedSet接口扩展了集合框架中的Set接口。它是一个实现数学集的接口。该接口包含了从Set接口继承的方法,并添加了一个特性,该特性以排序的方式存储该接口中要存储的所有元素。
SortedSet 接口的 层次结构:

在上图中,navigableSet 接口 扩展了SortedSet 接口。因为Set 集合不保留插入顺序,所以navigableSet 接口提供了TreeSet的实现类。实现navigableSet 的类是TreeSet,它是一个自平衡树的实现。因此,该接口为我们提供了一种通过该树导航的方法。
SortedSet接口声明为:
public interface SortedSet<E> extends Set<E>
由于SortedSet是一个接口,它只能用于实现该接口的类。TreeSet是实现SortedSet接口的类。现在,让我们看看如何在TreeSet上执行一些常用的操作。
为了向SortedSet添加元素,可以使用add()方法。但是,插入顺序不保留在TreeSet中 。在内部,对每个元素的值进行比较并按升序排序。
我们需要注意的是,不允许重复元素,并且忽略所有重复元素。而且,SortedSet不接受Null值。,否则报空指针异常
实例:
SortedSet<String> ts = new TreeSet<String>();
// 添加元素
ts.add("深圳");
ts.add("广州");
ts.add("珠海");
ts.add("佛山");
ts.add("佛山"); // 忽略重复值
// ts.add(null); // 不接受Null 值 ,报空指针异常:NullPointerException
System.out.println(ts);
输出:
[佛山, 广州, 深圳, 珠海]
添加元素后,如果想访问元素,可以使用内置方法,如contains()、first()、last()等。
实例:
public static void main(String[] args) {
SortedSet<String> ts = new TreeSet<String>();
// 添加元素
ts.add("深圳");
ts.add("广州");
ts.add("珠海");
ts.add("佛山");
System.out.println("有序集合:"+ts);
System.out.println("Contains方法: "
+ " " + ts.contains("珠海"));
System.out.println("首元素" + ts.first());
System.out.println("尾元素" + ts.last());
}
输出:
有序集合:[佛山, 广州, 深圳, 珠海]
Contains方法: true
首元素佛山
尾元素珠海
可以使用remove()方法从SortedSet中删除这些值。
实例:
public static void main(String[] args) {
SortedSet<String> ts = new TreeSet<String>();
// 添加元素
ts.add("深圳");
ts.add("广州");
ts.add("珠海");
ts.add("佛山");
System.out.println("有序集合:"+ts);
// 删除元素
ts.remove("广州");
System.out.println("删除后 有序集合:" + ts);
}
输出:
有序集合:[佛山, 广州, 深圳, 珠海]
删除后 有序集合:[佛山, 深圳, 珠海]
有多种方法可以遍历SortedSet。最著名的方法是使用增强的for循环。
实例:
public static void main(String[] args) {
SortedSet<String> ts = new TreeSet<String>();
// 添加元素
ts.add("深圳");
ts.add("广州");
ts.add("珠海");
ts.add("佛山");
System.out.println("有序集合:"+ts);
for (String value : ts)
System.out.print(value
+ ", ");
}
输出:
有序集合:[佛山, 广州, 深圳, 珠海]
佛山, 广州, 深圳, 珠海,
| Method | Description |
|---|---|
comparator() | 此方法返回用于排序该集合中的元素的比较器,如果该集合使用其元素的自然排序,则返回null。 |
first() | 这个方法返回这个集合中出现的第一个(最低的)元素。 |
headSet(element) | 这个方法返回比排序集合中存在的元素小的元素。 |
last() | 这个方法返回集合中最后(最高)的元素。 |
subSet(element1, element2) | 这个方法返回包含element1和element2之间元素的集合的一个排序子集。 |
tailSet(element) | 此方法返回大于或等于排序集合中存在的元素的元素。 |