当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java SortedSet Interface用法及代码示例


java.util 包中的 SortedSet 接口扩展了 collection framework 中的 Set 接口。它是一个实现数学集的接口。该接口包含继承自Set接口的方法,并增加了一个函数,可以将该接口中的所有元素以排序的方式存储。

Set-TreeSet-SortedSet-In-Java-Collection

在上图中,可导航集扩展了排序集接口。由于集合不保留插入顺序,因此可导航集合接口提供了在集合中导航的实现。实现可导航集的类是 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 相同元素的数组。


相关用法


注:本文由纯净天空筛选整理自佚名大神的英文原创作品 SortedSet Interface in Java with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。