Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤與異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 與框架

Java 類參考

Java 有用資源

Java - SortedSet 介面



SortedSet 介面擴充套件了Set,並聲明瞭一個按升序排序的集合的行為。除了 Set 定義的方法之外,SortedSet 介面還聲明瞭以下表格中總結的方法 -

當呼叫集合中不包含任何專案時,幾個方法會丟擲 NoSuchElementException。當物件與集合中的元素不相容時,會丟擲 ClassCastException。

如果嘗試使用空物件並且集合中不允許使用空物件,則會丟擲 NullPointerException。

SortedSet 介面方法

序號 方法及描述
1

Comparator comparator( )

返回呼叫 SortedSet 的比較器。如果此集合使用自然排序,則返回 null。

2

Object first( )

返回呼叫 SortedSet 中的第一個元素。

3

SortedSet headSet(Object end)

返回一個 SortedSet,其中包含呼叫 SortedSet 中小於 end 的元素。返回的 SortedSet 中的元素也由呼叫 SortedSet 引用。

4

Object last( )

返回呼叫 SortedSet 中的最後一個元素。

5

SortedSet subSet(Object start, Object end)

返回一個 SortedSet,其中包括 start 和 end 之間的元素。1. 返回的集合中的元素也由呼叫物件引用。

6

SortedSet tailSet(Object start)

返回一個 SortedSet,其中包含 SortedSet 中大於或等於 start 的元素。返回的集合中的元素也由呼叫物件引用。

SortedSet 介面上的操作

建立 SortedSet

TreeSet 類實現了 SortedSet 介面。我們可以使用 TreeSet 建構函式來建立一個 SortedSet 例項。以下是建立 SortedSet 例項的語法

語法

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

這裡我們正在建立一個字串值的排序集。此對映將儲存唯一的字串值。如果新增重複值,則該值將被丟棄。

向 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");

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

從 SortedSet 中刪除值

使用remove(value)方法,我們可以輕鬆地刪除儲存在 SortedSet 中的值/物件。

語法

public boolean remove(Object value)

如果值不在集合中,則它將返回 false,否則它將刪除該值並返回 true。

set.remove("a");

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

SortedSet 介面的示例

向 SortedSet 新增元素示例

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

從 SortedSet 中刪除元素示例

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

清除 SortedSet 示例

SortedSet 在各種類(如 TreeSet)中都有其實現。以下是一個帶有新增和清除操作的 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]
[]

SortedSet 介面的優點

  • SortedSet 確保對映始終按值的升序排序。每當將鍵值對新增到 SortedSet 時,都會對其重新排序。
  • 由於已排序且唯一,因此 SortedSet 在搜尋方面非常高效。
  • 我們可以透過在值型別上使用比較器來自定義排序機制。

SortedSet 介面的缺點

  • 由於 SortedSet 例項在每次新增或更改條目時都必須進行排序,因此在更改非常頻繁的情況下,它會成為效能瓶頸。在這種情況下,不建議使用 SortedSet。
  • 由於 SortedSet 僅維護唯一記錄,因此我們無法在資料集中可能出現重複條目的情況下使用此集合。
廣告