鴻蒙OS SortedSet

2022-06-30 16:17 更新

SortedSet

public interface SortedSet<E>
extends Set<E>

進一步提供對其元素的總排序的 Set。 元素使用它們的 Comparable 排序,或者由通常在排序集創(chuàng)建時提供的 Comparator 排序。 集合的迭代器將按元素升序遍歷集合。 提供了幾個額外的操作來利用排序。 (這個接口是 SortedMap 的集合類似物。)

插入有序集合的所有元素都必須實現(xiàn) Comparable 接口(或被指定的比較器接受)。 此外,所有此類元素必須相互比較:e1.compareTo(e2)(或comparator.compare(e1, e2))不得為排序集中的任何元素e1 和e2 拋出ClassCastException。 嘗試違反此限制將導(dǎo)致有問題的方法或構(gòu)造函數(shù)調(diào)用拋出 ClassCastException。

請注意,如果有序集合要正確實現(xiàn) Set 接口,則由有序集合維護的排序(無論是否提供顯式比較器)必須與 equals 一致。這是因為 Set 接口是根據(jù)等于操作定義的,但排序集使用其 compareTo(或比較)方法執(zhí)行所有元素比較 ,因此從排序集的角度來看,此方法認(rèn)為相等的兩個元素是相等的。 一個有序集合的行為是明確定義的,即使它的排序與equals不一致; 它只是不遵守 Set 接口的一般約定。

所有通用排序集實現(xiàn)類都應(yīng)提供四個“標(biāo)準(zhǔn)”構(gòu)造函數(shù): 1) 一個 void(無參數(shù))構(gòu)造函數(shù),它創(chuàng)建一個空排序集,根據(jù)其元素的自然順序排序。 2) 具有 Comparator 類型的單個參數(shù)的構(gòu)造函數(shù),它創(chuàng)建一個空的排序集,根據(jù)指定的比較器排序。 3) 一個具有單個 Collection 類型參數(shù)的構(gòu)造函數(shù),它創(chuàng)建一個新的排序集,其元素與其參數(shù)相同,并根據(jù)元素的自然順序進行排序。 4) 具有類型為 SortedSet 的單個參數(shù)的構(gòu)造函數(shù),它創(chuàng)建一個具有與輸入排序集相同元素和相同順序的新排序集。 無法強制執(zhí)行此建議,因為接口不能包含構(gòu)造函數(shù)。

注意:一些方法返回具有受限范圍的子集。 這樣的范圍是半開的,也就是說,它們包括它們的低端點但不包括它們的高端點(如果適用)。 如果您需要一個封閉范圍(包括兩個端點),并且元素類型允許計算給定值的后繼值,則只需請求從 lowEndpoint 到后繼值(highEndpoint)的子范圍。 例如,假設(shè) s 是一組已排序的字符串。 下面的成語獲得了一個視圖,該視圖包含 s 中從低到高的所有字符串,包括:

   SortedSet<String> sub = s.subSet(low, high+"\0");

類似的技術(shù)可用于生成開放范圍(不包含端點)。 下面的語句獲得了一個視圖,該視圖包含了 s 中從低到高的所有字符串,排他性的:

   SortedSet<String> sub = s.subSet(low+"\0", high);

此接口是 Java 集合框架的成員。

方法總結(jié)

修飾符和類型 方法 描述
Comparator<? super E> comparator() 返回用于對該 set 中的元素進行排序的比較器,如果此 set 使用其元素的 Comparable,則返回 null。
E first() 返回此集合中當(dāng)前的第一個(最低)元素。
SortedSetE headSet(E toElement) 返回此集合中元素嚴(yán)格小于 toElement 的部分的視圖。
E last() 返回此集合中當(dāng)前的最后一個(最高)元素。
default SpliteratorE spliterator() 在此排序集中的元素上創(chuàng)建一個 Spliterator。
SortedSetE subSet(E fromElement, E toElement) 返回此集合部分的視圖,其元素范圍從 fromElement(包括)到 toElement(不包括)。
SortedSetE tailSet(E fromElement) 返回此集合中元素大于或等于 fromElement 的部分的視圖。
從接口 java.util.Collection 繼承的方法
parallelStream, removeIf, stream
從接口 java.lang.Iterable 繼承的方法
forEach
從接口 java.util.Set 繼承的方法
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray

方法詳情

comparator

Comparator<? super E> comparator()

返回用于對該 set 中的元素進行排序的比較器,如果此 set 使用其元素的 Comparable,則返回 null。

返回:

用于對該集合中的元素進行排序的比較器,如果此集合使用其元素的自然排序,則為 null

subSet

SortedSetE subSet(E fromElement, E toElement)

返回此集合部分的視圖,其元素范圍從 fromElement(包括)到 toElement(不包括)。 (如果 fromElement 和 toElement 相等,則返回的集合為空。)返回的集合由該集合支持,因此返回集合中的更改會反映在該集合中,反之亦然。 返回的集合支持該集合支持的所有可選集合操作。

返回的集合將在嘗試插入超出其范圍的元素時拋出 IllegalArgumentException。

參數(shù):

參數(shù)名稱 參數(shù)描述
fromElement 返回集的低端點(包括)
toElement 返回集的高端點(不包括)

返回:

此集合的一部分的視圖,其元素范圍從 fromElement(包括)到 toElement(不包括)

Throws:

Throw名稱 Throw描述
ClassCastException 如果 fromElement 和 toElement 不能使用該集合的比較器相互比較(或者,如果該集合沒有比較器,則使用自然排序)。 如果 fromElement 或 toElement 無法與集合中當(dāng)前的元素進行比較,則實現(xiàn)可以但不是必須拋出此異常。
NullPointerException 如果 fromElement 或 toElement 為 null 并且此集合不允許 null 元素
IllegalArgumentException 如果 fromElement 大于 toElement; 或者如果這個集合本身有一個受限制的范圍,并且 fromElement 或 toElement 位于范圍的范圍之外

headSet

SortedSetE headSet(E toElement)

返回此集合中元素嚴(yán)格小于 toElement 的部分的視圖。 返回的集合由該集合支持,因此返回集合中的更改會反映在該集合中,反之亦然。 返回的集合支持該集合支持的所有可選集合操作。

返回的集合將在嘗試插入超出其范圍的元素時拋出 IllegalArgumentException。

參數(shù):

參數(shù)名稱 參數(shù)描述
toElement 返回集的高端點(不包括)

返回:

此集合中元素嚴(yán)格小于 toElement 的部分的視圖

Throws:

Throw名稱 Throw描述
ClassCastException 如果 toElement 與該集合的比較器不兼容(或者,如果該集合沒有比較器,如果 toElement 沒有實現(xiàn) Comparable)。 如果 toElement 無法與集合中的當(dāng)前元素進行比較,則實現(xiàn)可以但不是必須拋出此異常。
NullPointerException 如果 toElement 為 null 并且此集合不允許 null 元素
IllegalArgumentException 如果這個集合本身有一個限制范圍,并且 toElement 位于范圍的范圍之外

tailSet

SortedSetE tailSet(E fromElement)

返回此集合中元素大于或等于 fromElement 的部分的視圖。 返回的集合由該集合支持,因此返回集合中的更改會反映在該集合中,反之亦然。 返回的集合支持該集合支持的所有可選集合操作。

返回的集合將在嘗試插入超出其范圍的元素時拋出 IllegalArgumentException。

參數(shù):

參數(shù)名稱 參數(shù)描述
fromElement 返回集的低端點(包括)

返回:

此集合中元素大于或等于 fromElement 的部分的視圖

Throws:

Throw名稱 Throw描述
ClassCastException 如果 fromElement 與這個集合的比較器不兼容(或者,如果集合沒有比較器,如果 fromElement 沒有實現(xiàn) Comparable)。 如果無法將 fromElement 與當(dāng)前集合中的元素進行比較,則實現(xiàn)可以但不是必須拋出此異常。
NullPointerException 如果 fromElement 為 null 并且此集合不允許 null 元素
IllegalArgumentException 如果此集合本身具有受限范圍,并且 fromElement 位于范圍的范圍之外

first

E first()

返回此集合中當(dāng)前的第一個(最低)元素。

返回:

當(dāng)前在此集合中的第一個(最低)元素

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果這個集合是空的

last

E last()

返回此集合中當(dāng)前的最后一個(最高)元素。

返回:

當(dāng)前在此集合中的最后一個(最高)元素

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果這個集合是空的

spliterator

default SpliteratorE spliterator()

在此排序集中的元素上創(chuàng)建一個 Spliterator。

Spliterator 報告 Spliterator#DISTINCT、Spliterator#SORTED 和 Spliterator#ORDERED。 實施應(yīng)記錄附加特征值的報告。

如果排序集的比較器為空,則拆分器的比較器必須為空。 否則,拆分器的比較器必須與排序集的比較器相同或施加相同的總排序。

指定者:

接口 CollectionE 中的分離器

指定者:

接口 IterableE 中的分離器

指定者:

接口 SetE 中的分離器

返回:

在此排序集中的元素上的 Spliterator

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號