存在于SortedSet接口中java.util程序包扩展了存在于收集框架。它是实现数学集的接口。该接口包含从Set接口继承的方法, 并添加了一个功能, 该功能将所有元素存储在此接口中, 以有序方式存储。
在上图中, 可导航集合扩展了已排序集合的界面。由于集合不保留插入顺序, 因此可导航的集合界面提供了在集合中导航的实现。实现可导航集的类是TreeSet, 它是自平衡树的实现。因此, 该界面为我们提供了一种浏览该树的方式。
宣言:SortedSet接口声明为:
公共接口SortedSet扩展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是一个接口, 则无法创建SortedSet类型的对象。我们总是需要一个扩展此列表的类以创建一个对象。而且, 在引入泛型在Java 1.5中, 可以限制可以存储在SortedSet中的对象的类型。此类型安全集可以定义为:
// Obj是要存储在SortedSet中的对象的类型SortedSet <Obj> set = new TreeSet <Obj>();
在SortedSet上执行各种操作
由于SortedSet是一个接口, 因此只能与实现此接口的类一起使用。 TreeSet是实现SortedSet接口的类。现在, 让我们看看如何在TreeSet上执行一些常用的操作。
1.添加元素:为了将元素添加到SortedSet中, 我们可以使用add()方法。但是, 插入顺序不会保留在TreeSet中。在内部, 对于每个元素, 将按升序对值进行比较和排序。我们需要注意, 不允许重复元素, 所有重复元素都将被忽略。而且, Null值不被SortedSet接受。
// 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.访问元素:添加元素后, 如果我们希望访问元素, 则可以使用内置方法, 例如contains(), 第一(), 持续()等
// 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中删除这些值: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()。让我们看看如何使用此类创建一个sortedset对象。
// 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
SortedSet接口的方法
以下是SortedSet接口中提供的方法。在此, " *"表示方法是设置界面.
方法 | 描述 |
---|---|
*add(元素) | 此方法用于将特定元素添加到集合中。仅当集合中不存在指定的元素时, 该函数才会添加该元素;否则, 如果集合中已存在该元素, 则该函数将返回False。 |
* addAll(集合) | 此方法用于将上述集合中的所有元素附加到现有集合中。元素是随机添加的, 不遵循任何特定顺序。 |
*clear() | 此方法用于从集合中删除所有元素, 但不删除集合。该集合的参考仍然存在。 |
compare() | 此方法返回用于对该集合中的元素进行排序的比较器;如果此集合使用其元素的自然排序, 则返回null。 |
*contains(元素) | 此方法用于检查Set中是否存在特定元素。 |
* containsAll(集合) | 此方法用于检查集合是否包含给定集合中存在的所有元素。如果集合包含所有元素, 则此方法返回true;如果缺少任何元素, 则返回false。 |
first() | 此方法返回此集合中存在的第一个(最低)元素。 |
hashCode() | 此方法用于获取此Set实例的hashCode值。它返回一个整数值, 它是Set的此实例的hashCode值。 |
headSet(元素) | 此方法返回的元素少于排序集中存在的元素。 |
*isEmpty() | 此方法用于检查SortedSet是否为空。 |
last() | 此方法返回集合中存在的last(最高)元素。 |
* delete(元素) | 此方法用于从集合中删除给定的元素。如果Set中存在指定的元素, 则此方法返回True, 否则返回False。 |
* removeAll(集合) | 此方法用于从集合中删除集合中存在的所有元素。如果此设置因调用而更改, 则此方法返回true。 |
* retainAll(集合) | 此方法用于保留给定集合中提到的集合中的所有元素。如果此设置因调用而更改, 则此方法返回true。 |
* size() | 此方法用于获取集合的大小。这将返回一个整数值, 表示元素的数量。 |
subSet(element1, element2) | 此方法从包含element1和element2之间的元素的集合返回排序后的子集。 |
tailSet(元素) | 此方法返回大于或等于排序集中存在的元素的元素。 |
* toArray() | 此方法用于形成与Set相同元素的数组。 |