一、SortedSet 接口 是什么
位于java.util包的SortedSet接口
扩展了集合框架中的Set接口。它是一个实现数学集
的接口。该接口包含了从Set接口继承的方法,并添加了一个特性,该特性以排序的方式存储
该接口中要存储的所有元素。
SortedSet 接口的 层次结构:
在上图中,navigableSet 接口
扩展了SortedSet 接口
。因为Set 集合不保留插入顺序
,所以navigableSet
接口提供了TreeSet
的实现类。实现navigableSet
的类是TreeSet,它是一个自平衡树的实现
。因此,该接口为我们提供了一种通过该树导航的方法。
SortedSet接口声明为:
public interface SortedSet<E> extends Set<E>
二、SortedSet 接口 的操作
由于SortedSet是一个接口,它只能用于实现该接口的类
。TreeSet是实现SortedSet接口的类。现在,让我们看看如何在TreeSet上执行一些常用的操作。
2.1 添加操作
为了向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);
输出:
[佛山, 广州, 深圳, 珠海]
2.2 访问操作
添加元素后,如果想访问元素,可以使用内置方法,如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
首元素佛山
尾元素珠海
2.3 删除操作
可以使用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);
}
输出:
有序集合:[佛山, 广州, 深圳, 珠海]
删除后 有序集合:[佛山, 深圳, 珠海]
2.4 迭代操作
有多种方法可以遍历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
+ ", ");
}
输出:
有序集合:[佛山, 广州, 深圳, 珠海]
佛山, 广州, 深圳, 珠海,
三、SortedSet接口的API
Method | Description |
---|---|
comparator() | 此方法返回用于排序该集合中的元素的比较器,如果该集合使用其元素的自然排序,则返回null。 |
first() | 这个方法返回这个集合中出现的第一个(最低的)元素。 |
headSet(element) | 这个方法返回比排序集合中存在的元素小的元素。 |
last() | 这个方法返回集合中最后(最高)的元素。 |
subSet(element1, element2) | 这个方法返回包含element1和element2之间元素的集合的一个排序子集。 |
tailSet(element) | 此方法返回大于或等于排序集合中存在的元素的元素。 |