java.util 包中的 SortedSet 接口扩展了 collection framework 中的 Set 接口。它是一个实现数学集的接口。该接口包含继承自Set接口的方法,并增加了一个函数,可以将该接口中的所有元素以排序的方式存储。
在上图中,可导航集扩展了排序集接口。由于集合不保留插入顺序,因此可导航集合接口提供了在集合中导航的实现。实现可导航集的类是 TreeSet,它是 self-balancing 树的实现。因此,这个接口为我们提供了一种浏览这棵树的方法。
声明: SortedSet 接口声明为:
public interface SortedSet extends Set
排序集的示例:
// Java program to demonstrate the
// Sorted Set
import java.util.*;
class SortedSetExample{
public static void main(String[] args)
{
SortedSet<String> ts
= new TreeSet<String>();
// Adding elements into the TreeSet
// using add()
ts.add("India");
ts.add("Australia");
ts.add("South Africa");
// Adding the duplicate
// element
ts.add("India");
// Displaying the TreeSet
System.out.println(ts);
// Removing items from TreeSet
// using remove()
ts.remove("Australia");
System.out.println("Set after removing "
+ "Australia:" + ts);
// Iterating over Tree set items
System.out.println("Iterating over set:");
Iterator<String> i = ts.iterator();
while (i.hasNext())
System.out.println(i.next());
}
}
[Australia, India, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa
注意:SortedSet 的所有元素必须实现类似的接口(或被指定的比较器接受)并且所有这些元素必须是相互可比较的。相互比较只是意味着两个对象互相接受对方作为其compareTo 方法的参数。
创建SortedSet对象
由于 SortedSet 是 interface ,因此无法创建 SortedSet 类型的对象。我们总是需要一个扩展这个列表的类来创建一个对象。而且,在Java 1.5中引入Generics之后,可以限制SortedSet中可以存储的对象类型。该类型安全集可以定义为:
// Obj is the type of the object to be stored in SortedSet
SortedSet<Obj> set = new TreeSet<Obj> ();
对SortedSet执行各种操作
由于SortedSet 是一个接口,因此它只能与实现该接口的类一起使用。 TreeSet 是实现SortedSet 接口的类。现在,让我们看看如何对 TreeSet 执行一些常用操作。
1. 添加元素:为了向 SortedSet 添加元素,我们可以使用SortedSet add()但是,TreeSet 中不保留插入顺序。在内部,对于每个元素,都会对值进行比较并按升序排序。我们需要注意的是,不允许有重复的元素,并且所有重复的元素都会被忽略。而且,SortedSet 不接受 Null 值。
// Java code to demonstrate
// the working of SortedSet
import java.util.*;
class GFG {
public static void main(String[] args)
{
SortedSet<String> ts
= new TreeSet<String>();
// Elements are added using add() method
ts.add("A");
ts.add("B");
ts.add("C");
ts.add("A");
System.out.println(ts);
}
}
[A, B, C]
2. 访问元素:添加元素后,如果我们希望访问元素,我们可以使用内置方法,例如SortedSet contains(),SortedSet contains(),SortedSet last(), 等等。
// Java code to demonstrate
// the working of SortedSet
import java.util.*;
class GFG {
public static void main(String[] args)
{
SortedSet<String> ts
= new TreeSet<String>();
// Elements are added using add() method
ts.add("A");
ts.add("B");
ts.add("C");
ts.add("A");
System.out.println("Sorted Set is " + ts);
String check = "D";
// Check if the above string exists in
// the SortedSet or not
System.out.println("Contains " + check
+ " " + ts.contains(check));
// Print the first element in
// the SortedSet
System.out.println("First Value " + ts.first());
// Print the last element in
// the SortedSet
System.out.println("Last Value " + ts.last());
}
}
Sorted Set is [A, B, C] Contains D false First Value A Last Value C
3. 删除值:可以使用以下命令从 SortedSet 中删除这些值SortedSet remove().
// Java code to demonstrate
// the working of SortedSet
import java.util.*;
class GFG{
public static void main(String[] args)
{
SortedSet<String> ts
= new TreeSet<String>();
// Elements are added using add() method
ts.add("A");
ts.add("B");
ts.add("C");
ts.add("B");
ts.add("D");
ts.add("E");
System.out.println("Initial TreeSet " + ts);
// Removing the element b
ts.remove("B");
System.out.println("After removing element " + ts);
}
}
Initial TreeSet [A, B, C, D, E] After removing element [A, C, D, E]
4. 迭代 SortedSet:有多种方法可以迭代 SortedSet。最著名的是使用增强的 for 循环。
// Java code to demonstrate
// the working of SortedSet
import java.util.*;
class GFG
{
public static void main(String[] args)
{
SortedSet<String> ts
= new TreeSet<String>();
// Elements are added using add() method
ts.add("C");
ts.add("D");
ts.add("E");
ts.add("A");
ts.add("B");
ts.add("Z");
// Iterating though the SortedSet
for (String value : ts)
System.out.print(value
+ ", ");
System.out.println();
}
}
A, B, C, D, E, Z,
实现SortedSet接口的类是TreeSet。
树集:在集合框架中实现的 TreeSet 类是 SortedSet 接口和 SortedSet 扩展的实现设置接口。它的行为就像一个简单的集合,不同之处在于它以排序的格式存储元素。 TreeSet采用树形数据结构进行存储。对象按升序存储。但是我们可以使用方法按降序迭代TreeSet descendingIterator()。让我们看看如何使用此类创建有序集对象。
// Java program to demonstrate the
// creation of SortedSet object using
// the TreeSet class
import java.util.*;
class GFG {
public static void main(String[] args)
{
SortedSet<String> ts
= new TreeSet<String>();
// Adding elements into the TreeSet
// using add()
ts.add("India");
ts.add("Australia");
ts.add("South Africa");
// Adding the duplicate
// element
ts.add("India");
// Displaying the TreeSet
System.out.println(ts);
// Removing items from TreeSet
// using remove()
ts.remove("Australia");
System.out.println("Set after removing "
+ "Australia:" + ts);
// Iterating over Tree set items
System.out.println("Iterating over set:");
Iterator<String> i = ts.iterator();
while (i.hasNext())
System.out.println(i.next());
}
}
[Australia, India, South Africa] Set after removing Australia:[India, South Africa] Iterating over set: India South Africa
Methods of SortedSet Interface
以下是 SortedSet 接口中存在的方法。这里, “*” 表示这些方法是 Set interface 的一部分。
方法 | 说明 |
---|---|
SortedSet add() | 此方法用于将特定元素添加到集合中。仅当指定元素尚不存在于集合中时,该函数才添加该元素,否则,如果该元素已存在于集合中,则该函数返回 False。 |
SortedSet addAll() | 此方法用于将提到的集合中的所有元素追加到现有集合中。这些元素是随机添加的,不遵循任何特定顺序。 |
SortedSet clear() | 该方法用于删除集合中的所有元素,但不删除集合。该集的参考仍然存在。 |
TreeSet comparator() | 此方法返回用于对该集合中的元素进行排序的比较器,如果该集合使用其元素的自然排序,则返回 null。 |
SortedSet contains() | 该方法用于检查Set中是否存在特定元素。 |
SortedSet containsAll() | 此方法用于检查集合是否包含给定集合中存在的所有元素。如果集合包含所有元素,则此方法返回 true;如果缺少任何元素,则返回 false。 |
SortedSet first() | 此方法返回该集合中存在的第一个(最低)元素。 |
SortedSet hashCode() | 此方法用于获取此 Set 实例的 hashCode 值。它返回一个整数值,该值是该 Set 实例的 hashCode 值。 |
SortedSet headSet() | 此方法返回小于排序集中存在的元素的元素。 |
SortedSet isEmpty() | 此方法用于检查SortedSet是否为空。 |
SortedSet last() | 此方法返回集合中存在的最后一个(最高)元素。 |
SortedSet remove() | 该方法用于从集合中删除给定的元素。如果指定的元素存在于 Set 中,则此方法返回 True,否则返回 False。 |
SortedSet removeAll() | 此方法用于从集合中删除集合中存在的所有元素。如果此集合因调用而发生更改,则此方法返回 true。 |
SortedSet retainAll() | 此方法用于保留给定集合中提到的集合中的所有元素。如果此集合因调用而发生更改,则此方法返回 true。 |
SortedSet size() | 该方法用于获取集合的大小。这将返回一个整数值,表示元素的数量。 |
SortedSet subSet() | 此方法从包含 element1 和 element2 之间的元素的集合中返回已排序的子集。 |
SortedSet tailSet() | 此方法返回大于或等于排序集中存在的元素的元素。 |
SortedSet size() | 此方法用于生成与 Set 相同元素的数组。 |
相关用法
- Java SortedSet add()用法及代码示例
- Java SortedSet addAll()用法及代码示例
- Java SortedSet clear()用法及代码示例
- Java SortedSet contains()用法及代码示例
- Java SortedSet containsAll()用法及代码示例
- Java SortedSet equals()用法及代码示例
- Java SortedSet first()用法及代码示例
- Java SortedSet hashCode()用法及代码示例
- Java SortedSet headSet()用法及代码示例
- Java SortedSet isEmpty()用法及代码示例
- Java SortedSet iterator()用法及代码示例
- Java SortedSet last()用法及代码示例
- Java SortedSet remove()用法及代码示例
- Java SortedSet removeAll()用法及代码示例
- Java SortedSet retainAll()用法及代码示例
- Java SortedSet size()用法及代码示例
- Java SortedSet subSet()用法及代码示例
- Java SortedSet tailSet()用法及代码示例
- Java SortedSet toArray()用法及代码示例
- Java SortedMap clear()用法及代码示例
- Java SortedMap comparator()用法及代码示例
- Java SortedMap conatinsKey()用法及代码示例
- Java SortedMap conatinsValue()用法及代码示例
- Java SortedMap entrySet()用法及代码示例
- Java SortedMap equals()用法及代码示例
注:本文由纯净天空筛选整理自佚名大神的英文原创作品 SortedSet Interface in Java with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。