Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误与异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 与框架

Java 类参考

Java 有用资源

Java - SortedSet 接口



SortedSet 接口扩展了Set,并声明了一个按升序排序的集合的行为。除了 Set 定义的方法之外,SortedSet 接口还声明了以下表格中总结的方法 -

当调用集合中不包含任何项目时,几个方法会抛出 NoSuchElementException。当对象与集合中的元素不兼容时,会抛出 ClassCastException。

如果尝试使用空对象并且集合中不允许使用空对象,则会抛出 NullPointerException。

SortedSet 接口方法

序号 方法及描述
1

Comparator comparator( )

返回调用 SortedSet 的比较器。如果此集合使用自然排序,则返回 null。

2

Object first( )

返回调用 SortedSet 中的第一个元素。

3

SortedSet headSet(Object end)

返回一个 SortedSet,其中包含调用 SortedSet 中小于 end 的元素。返回的 SortedSet 中的元素也由调用 SortedSet 引用。

4

Object last( )

返回调用 SortedSet 中的最后一个元素。

5

SortedSet subSet(Object start, Object end)

返回一个 SortedSet,其中包括 start 和 end 之间的元素。1. 返回的集合中的元素也由调用对象引用。

6

SortedSet tailSet(Object start)

返回一个 SortedSet,其中包含 SortedSet 中大于或等于 start 的元素。返回的集合中的元素也由调用对象引用。

SortedSet 接口上的操作

创建 SortedSet

TreeSet 类实现了 SortedSet 接口。我们可以使用 TreeSet 构造函数来创建一个 SortedSet 实例。以下是创建 SortedSet 实例的语法

语法

// Create the sorted set
SortedSet<String> set = new TreeSet<>();

这里我们正在创建一个字符串值的排序集。此映射将存储唯一的字符串值。如果添加重复值,则该值将被丢弃。

向 SortedSet 添加值

SortedSet 提供了一个add()方法,该方法可用于向 SortedSet 实例添加值。每当向集合添加值时,都会针对现有值进行检查。如果集合被修改,则方法将返回 true,否则将返回 false。

语法

public boolean add(E e)

其中 E 表示要添加的元素。如果元素已存在,则不会执行任何操作,并且方法将返回 false。

例子

// Add elements to the set
set.add("b");
set.add("c");
set.add("a");

从 SortedSet 获取值

为了从 SortedSet 获取值,我们必须使用 iterator() 方法从 SortedSet 获取迭代器对象。一旦迭代器对象可用,该对象就可以用于检索 SortedSet 中存在的值。

例子

// Iterating over the elements in the set
Iterator it = set.iterator();
while (it.hasNext()) {        
 // Get element
 Object element = it.next();
 System.out.println(element.toString());
}

从 SortedSet 中删除值

使用remove(value)方法,我们可以轻松地删除存储在 SortedSet 中的值/对象。

语法

public boolean remove(Object value)

如果值不在集合中,则它将返回 false,否则它将删除该值并返回 true。

set.remove("a");

迭代 SortedSet

SortedSet 条目可以轻松导航。SortedSet 提供了一个方法iterator(),该方法提供了一个迭代器来导航集合的所有条目。

语法

public Iterator<E> iterator()

其中 E 是要迭代的对象的类型。

例子

// Iterating over the elements in the set
Iterator it = set.iterator();

while (it.hasNext()) {
 // Get element
 Object element = it.next();
 System.out.println(element.toString());
}

SortedSet 接口的示例

向 SortedSet 添加元素示例

SortedSet 在各种类(如 TreeSet)中都有其实现。以下是具有 add 操作的 TreeSet 类的示例 -

import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;

public class SortedSetDemo {

   public static void main(String[] args) {
      // Create the sorted set
      SortedSet<String> set = new TreeSet<>();  

      // Add elements to the set
      set.add("b");
      set.add("c");
      set.add("a");

      // Iterating over the elements in the set
      Iterator it = set.iterator();

      while (it.hasNext()) {
         
         // Get element
         Object element = it.next();
         System.out.println(element.toString());
      }
   }
}

输出

a
b
c

从 SortedSet 中删除元素示例

SortedSet 在各种类(如 TreeSet)中都有其实现。以下是具有 add 和 remove 操作的 TreeSet 类的示例 -

import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;

public class SortedSetDemo {

   public static void main(String[] args) {
      // Create the sorted set
      SortedSet<String> set = new TreeSet<>();  

      // Add elements to the set
      set.add("b");
      set.add("c");
      set.add("a");
      set.add("d");
      set.add("e");
      set.add("f");
      
      // remove elements
      set.remove("c");
      set.remove("f");

      // Iterating over the elements in the set
      Iterator it = set.iterator();

      while (it.hasNext()) {
         // Get element
         Object element = it.next();
         System.out.println(element.toString());
      }
   }
}

输出

a
b
d
e

清除 SortedSet 示例

SortedSet 在各种类(如 TreeSet)中都有其实现。以下是一个带有添加和清除操作的 TreeSet 类的示例:

import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;

public class SortedSetDemo {

   public static void main(String[] args) {
      // Create the sorted set
      SortedSet<String> set = new TreeSet<>();  

      // Add elements to the set
      set.add("b");
      set.add("c");
      set.add("a");
      set.add("d");
      set.add("e");
      set.add("f");
      
      System.out.println(set);
      
      // remove elements
      set.clear();
      
      System.out.println(set);
   }
}

输出

[a, b, c, d, e, f]
[]

SortedSet 接口的优点

  • SortedSet 确保映射始终按值的升序排序。每当将键值对添加到 SortedSet 时,都会对其重新排序。
  • 由于已排序且唯一,因此 SortedSet 在搜索方面非常高效。
  • 我们可以通过在值类型上使用比较器来自定义排序机制。

SortedSet 接口的缺点

  • 由于 SortedSet 实例在每次添加或更改条目时都必须进行排序,因此在更改非常频繁的情况下,它会成为性能瓶颈。在这种情况下,不建议使用 SortedSet。
  • 由于 SortedSet 仅维护唯一记录,因此我们无法在数据集中可能出现重复条目的情况下使用此集合。
广告