Java中的SortedSet接口及其示例

Java中的SortedSet接口及其示例

java.util包中的SortedSet接口扩展了集合框架中的Set接口。它是一个实现数学集合的接口。该接口包含了从Set接口继承的方法,同时添加了一个特性,即按有序方式存储该接口中的所有元素。

Java中的SortedSet接口及其示例

如上图所示,可导航的集合扩展了SortedSet接口。由于集合不保留插入顺序,可导航集合接口提供了遍历集合的实现。实现可导航集合的类是TreeSet,它是一种自平衡树的实现。因此,该接口提供了一种通过该树进行导航的方式。

声明: SortedSet接口的声明如下:

public interface SortedSet extends Set

Sorted Set示例:

// Java程序演示Sorted Set
import java.util.*;
class SortedSetExample {
    public static void main(String[] args) {
        SortedSet<String> ts = new TreeSet<String>();
        // 使用add()方法将元素添加到TreeSet中
        ts.add("India");
        ts.add("Australia");
        ts.add("South Africa");
        // 添加重复元素
        ts.add("India");
        // 显示TreeSet
        System.out.println(ts);
        // 使用remove()方法从TreeSet中删除元素
        ts.remove("Australia");
        System.out.println("删除Australia后的Set:" + ts);
        // 遍历TreeSet中的项
        System.out.println("遍历Set:");
        Iterator<String> i = ts.iterator();
            while (i.hasNext())
                System.out.println(i.next());
    }
}
[Australia, India, South Africa]
删除Australia后的Set:[India, South Africa]
遍历Set:
India
South Africa

注意: SortedSet的所有元素都必须实现Comparable接口(或由指定的比较器接受),并且所有这些元素必须相互比较。相互比较表示两个对象将彼此作为其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中不保留插入顺序。对于每个元素,内部按升序比较并排序。我们需要注意重复元素是不允许的,而且不接受空值。

// Java代码演示
// SortedSet的工作方式
import java.util.*;

class GFG {

    public static void main(String[] args)
    {
        SortedSet ts
            = new TreeSet();

        // 使用add()方法添加元素
        ts.add("A");
        ts.add("B");
        ts.add("C");
        ts.add("A");

        System.out.println(ts);
    }
}
[A, B, C]```  

2. 访问元素: 在添加元素之后,如果我们希望访问元素,则可以使用内置方法,例如contains(),first(),last()等。

// Java代码演示
// SortedSet的工作方式
import java.util.*;

class GFG {

    public static void main(String[] args)
    {
        SortedSet ts
            = new TreeSet();

        // 使用add()方法添加元素
        ts.add("A");
        ts.add("B");
        ts.add("C");
        ts.add("A");

        System.out.println("Sorted Set is " + ts);

        String check = "D";

        // 检查上述字符串是否存在于
        // SortedSet中
        System.out.println("Contains " + check
                                   + " " + ts.contains(check));

        // 打印SortedSet中的第一个元素
        System.out.println("First Value " + ts.first());

        // 打印SortedSet中的最后一个元素
        System.out.println("Last Value " + ts.last());
    }
}
Sorted Set is [A, B, C]
Contains D false
First Value A
Last Value C

3. 移除值: 可以使用remove()方法从SortedSet中删除值。

// Java代码演示
// SortedSet的工作方式
import java.util.*;

class GFG{

    public static void main(String[] args)
    {
        SortedSet ts
            = new TreeSet();

        // 使用add()方法添加元素
        ts.add("A");
        ts.add("B");
        ts.add("C");
        ts.add("B");
        ts.add("D");
        ts.add("E");

        System.out.println("Initial TreeSet " + ts);

        // 删除元素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代码演示
// SortedSet的工作方式
import java.util.*;

class GFG
 { 
    public static void main(String[] args)
    {
        SortedSet ts
            = new TreeSet();

        // 使用add()方法添加元素
        ts.add("C");
        ts.add("D");
        ts.add("E");
        ts.add("A");
        ts.add("B");
        ts.add("Z");

        // 遍历SortedSet
        for (String value : ts)
            System.out.print(value
                              + ", ");
        System.out.println();
    }
}
A, B, C, D, E, Z,

实现SortedSet接口的类是TreeSet。

TreeSet: TreeSet类是在集合框架中实现的SortedSet接口的一个实现,SortedSet扩展了Set接口。它表现得像一个简单的set,但它存储元素的格式是按排序的方式。TreeSet使用树数据结构进行存储,对象以按升序排序的方式存储。但我们可以使用TreeSet.descendingIterator() 方法按降序迭代。让我们看看如何使用这个类创建一个SortedSet对象。

// Java程序演示
//使用TreeSet类创建SortedSet对象
import java.util.*;

class GFG {
    public static void main(String[] args)
    {
        SortedSet ts
            = new TreeSet();

        //使用add()添加元素到TreeSet
        ts.add("India");
        ts.add("Australia");
        ts.add("South Africa");

        //添加重复元素
        ts.add("India");

        //显示TreeSet
        System.out.println(ts);

        //使用remove()从TreeSet中删除元素
        ts.remove("Australia");
        System.out.println("删除Australia后的集合:" + ts);

        //遍历TreeSet项
        System.out.println("迭代集合:");
        Iterator i = ts.iterator();
        while (i.hasNext())
            System.out.println(i.next());
    }
}
[Australia, India, South Africa]
删除Australia后的集合:[India, South Africa]
迭代集合:
India
South Africa

SortedSet接口的方法

SortedSet接口中包含的方法如下,其中“*”表示方法是Set接口的一部分。

方法 描述
add(element) 此方法用于将特定元素添加到集合中。仅在集合中不存在指定的元素时,该函数将添加该元素否则如果元素已经存在于集合中,则该函数返回False。
addAll(collection) 此方法用于将指定集合中的所有元素追加到现有集合中。元素是随意添加的,没有遵循任何特定顺序。
clear() 此方法用于从集合中删除所有元素,但不删除集合。集合的引用仍然存在。
comparator() 此方法返回用于对此集合中的元素排序的比较器,如果此集合使用其元素的自然顺序,则返回null。
contains(element) 此方法用于检查集合中是否存在特定元素。
containsAll(collection) 此方法用于检查集合是否包含给定集合中存在的所有元素。如果集合包含所有元素,则此方法返回true,否则返回false。
first() 此方法返回此集合中存在的第一个(最低)元素。
hashCode() 此方法用于获取此Set实例的hashCode值。它返回一个整数值,该整数值是此Set实例的hashCode值。
headSet(element) 此方法返回排序集合中少于存在于元素之下的元素元素。
isEmpty() 此方法用于检查SortedSet是否为空。
last() 此方法返回此集合中存在的最后一个(最高)元素。
remove(element) 此方法用于从集合中删除给定的元素。如果指定的元素存在于集合中,则此方法返回True,否则返回False。
removeAll(collection) 此方法用于从集合中删除存在于集合中的所有元素。如果此集合因调用而更改,则此方法返回true。
retainAll(collection) 此方法用于保留集合中提到的所有元素。如果此集合因调用而更改,则此方法返回true。
size() 此方法用于获取集合的大小。这返回一个整数值,表示元素的数量。
subSet(element1, element2) 此方法返回一个从包含在element1和element2之间的元素的集合中排序的子集。
tailSet(element) 此方法返回排序集合中大于或等于存在于元素之上的元素元素。
toArray() 此方法用于形成与Set中相同的元素的数组。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程