Java 简明教程

Java - SortedSet Interface

SortedSet interface 扩展 Set 并声明按升序排列的集合的行为。除了 Set 定义的那些方法之外,SortedSet 接口还声明在下表中总结的方法 -

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

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

SortedSet Interface Methods

Sr.No.

Method & Description

1

Comparator comparator( ) 返回调用排序集的比较器。如果对该集使用自然比较,则返回 null。

2

Object first( ) 返回调用排序集中的第一个元素。

3

SortedSet headSet(Object end) 返回一个 SortedSet,其中包含调用排序集中包含的那些小于 end 的元素。已返回排序集中元素还由调用排序集引用。

4

Object last( ) 返回调用排序集中的最后一个元素。

5

SortedSet subSet(Object start, Object end) 返回一个 SortedSet,其中包含 start 和 end 之间的那些元素。1.已返回集合中的元素还由调用对象引用。

6

SortedSet tailSet(Object start) 返回一个 SortedSet,其中包含排序集中包含的那些大于或等于 start 的元素。已返回集中的元素还由调用对象引用。

Operations on SortedSet Interface

Creating a SortedSet

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

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

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

Adding Value to a 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");

Getting value from 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());
}

Deleting a value from a SortedSet

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

public boolean remove(Object value)

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

set.remove("a");

Iterating 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());
}

Examples of SortedSet Interface

Adding Element to a SortedSet Example

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

Removing Element from a SortedSet Example

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

Clearing a SortedSet Example

SortedSet 在 TreeSet 等各种类中实现了其实现。以下是具有 add 和 clear 操作的 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]
[]

Advantages of SortedSet Interface

  1. SortedSet 可确保映射始终按值的升序排列。每当将键值对添加到 SortedSet 时,将对它进行重新排序

  2. 排序和唯一,SortedSet 在搜索中非常高效

  3. 我们可以使用值类型的比较器来自定义排序机制。

Disadvantages of SortedSet Interface

  1. 由于每次添加或更改条目时 SortedSet 实例都必须排序,因此在更改非常频繁的情况下,它会成为性能瓶颈。在这种情况下,不首选 SortedSet。

  2. 由于 SortedSet 仅维护唯一记录,因此我们无法在数据集中可能出现重复条目的情况下使用此集合。