鴻蒙OS SortedMap

2022-06-30 15:51 更新

SortedMap

public interface SortedMap<K,V>
extends Map<K,V>

進(jìn)一步提供對(duì)其鍵的總排序的 Map。 映射根據(jù)其鍵的 Comparable 或通常在排序映射創(chuàng)建時(shí)提供的 Comparator 進(jìn)行排序。 此順序在遍歷已排序地圖的集合視圖(由 entrySet、keySet 和 values 方法返回)時(shí)反映出來。 提供了幾個(gè)額外的操作來利用排序。 (此接口是 SortedSet 的映射類似物。)

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

請(qǐng)注意,如果有序映射要正確實(shí)現(xiàn) Map 接口,則有序映射維護(hù)的排序(無論是否提供顯式比較器)必須與 equals 一致。 (參見 Comparable 接口或 Comparator 接口,了解與 equals 一致的精確定義。)這是因?yàn)?Map 接口是根據(jù) equals 操作定義的,但排序后的映射使用其 compareTo(或 compare)方法執(zhí)行所有鍵比較 ,因此從排序映射的角度來看,此方法認(rèn)為相等的兩個(gè)鍵是相等的。 樹形圖的行為是明確定義的,即使它的排序與等號(hào)不一致; 它只是不遵守 Map 接口的一般合同。

所有通用的排序地圖實(shí)現(xiàn)類都應(yīng)該提供四個(gè)“標(biāo)準(zhǔn)”構(gòu)造函數(shù)。 盡管無法通過接口指定所需的構(gòu)造函數(shù),但無法強(qiáng)制執(zhí)行此建議。 所有排序地圖實(shí)現(xiàn)的預(yù)期“標(biāo)準(zhǔn)”構(gòu)造函數(shù)是:

  1. 一個(gè) void(無參數(shù))構(gòu)造函數(shù),它創(chuàng)建一個(gè)空的排序映射,根據(jù)其鍵的自然順序排序。
  2. 具有 Comparator 類型的單個(gè)參數(shù)的構(gòu)造函數(shù),它創(chuàng)建根據(jù)指定比較器排序的空排序映射。
  3. 具有 Map 類型的單個(gè)參數(shù)的構(gòu)造函數(shù),它創(chuàng)建一個(gè)具有與其參數(shù)相同的鍵值映射的新映射,并根據(jù)鍵的自然順序進(jìn)行排序。
  4. 帶有一個(gè) SortedMap 類型參數(shù)的構(gòu)造函數(shù),它創(chuàng)建一個(gè)新的有序映射,它具有與輸入有序映射相同的鍵值映射和相同的順序。

注意:一些方法返回具有受限鍵范圍的子圖。 這樣的范圍是半開的,也就是說,它們包括它們的低端點(diǎn)但不包括它們的高端點(diǎn)(如果適用)。 如果您需要一個(gè)封閉范圍(包括兩個(gè)端點(diǎn)),并且密鑰類型允許計(jì)算給定密鑰的后繼者,則只需請(qǐng)求從 lowEndpoint 到后繼者(highEndpoint)的子范圍。 例如,假設(shè) m 是一個(gè)鍵是字符串的映射。 以下習(xí)慣用法獲取包含 m 中所有鍵值映射的視圖,其鍵介于低和高之間,包括:

   SortedMap<String, V> sub = m.subMap(low, high+"\0");

類似的技術(shù)可用于生成開放范圍(不包含端點(diǎn))。 以下成語獲取一個(gè)視圖,其中包含 m 中的所有鍵值映射,其鍵在低和高之間,互斥:

   SortedMap<String, V> sub = m.subMap(low+"\0", high);

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

嵌套類摘要

從接口 java.util.Map 繼承的嵌套類/接口
Map.EntryK,V

方法總結(jié)

修飾符和類型 方法 描述
Comparator<? super K> comparator() 返回用于對(duì)該映射中的鍵進(jìn)行排序的比較器,如果此映射使用其鍵的 Comparable,則返回 null。
Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射的 Set 視圖。
K firstKey() 返回此映射中當(dāng)前的第一個(gè)(最低)鍵。
SortedMapK,V headMap(K toKey) 返回此映射部分的視圖,其鍵嚴(yán)格小于 toKey。
SetK keySet() 返回此映射中包含的鍵的 Set 視圖。
K lastKey() 返回此映射中當(dāng)前的最后一個(gè)(最高)鍵。
SortedMapK,V subMap(K fromKey, K toKey) 返回此映射部分的視圖,其鍵范圍從 fromKey(包括)到 toKey(不包括)。
SortedMapK,V tailMap(K fromKey) 返回此地圖部分的視圖,其鍵大于或等于 fromKey。
CollectionV values() 返回此映射中包含的值的集合視圖。
從接口 java.util.Map 繼承的方法
clear, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, equals, forEach, get, getOrDefault, hashCode, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size

方法詳情

comparator

Comparator<? super K> comparator()

返回用于對(duì)該映射中的鍵進(jìn)行排序的比較器,如果此映射使用其鍵的 Comparable,則返回 null。

返回:

用于對(duì)該映射中的鍵進(jìn)行排序的比較器,如果此映射使用其鍵的自然排序,則為 null

subMap

SortedMapK,V subMap(K fromKey, K toKey)

返回此映射部分的視圖,其鍵范圍從 fromKey(包括)到 toKey(不包括)。 (如果 fromKey 和 toKey 相等,則返回的映射為空。)返回的映射受此映射的支持,因此返回映射中的更改會(huì)反映在此映射中,反之亦然。 返回的地圖支持該地圖支持的所有可選地圖操作。

返回的映射將在嘗試在其范圍之外插入鍵時(shí)拋出 IllegalArgumentException。

參數(shù):

參數(shù)名稱 參數(shù)描述
fromKey 返回映射中鍵的低端點(diǎn)(包括)
toKey 返回映射中鍵的高端(不包括)

返回:

此map部分的視圖,其鍵范圍從 fromKey(包括)到 toKey(不包括)

Throws:

Throw名稱 Throw描述
ClassCastException 如果 fromKey 和 toKey 無法使用此映射的比較器相互比較(或者,如果映射沒有比較器,則使用自然排序)。 如果無法將 fromKey 或 toKey 與映射中當(dāng)前的鍵進(jìn)行比較,則實(shí)現(xiàn)可以但不是必須拋出此異常。
NullPointerException 如果 fromKey 或 toKey 為空并且此映射不允許空鍵
IllegalArgumentException 如果 fromKey 大于 toKey; 或者如果此地圖本身具有限制范圍,并且 fromKey 或 toKey 位于范圍的范圍之外

headMap

SortedMapK,V headMap(K toKey)

返回此映射部分的視圖,其鍵嚴(yán)格小于 toKey。 返回的地圖由此地圖支持,因此返回地圖中的更改會(huì)反映在此地圖中,反之亦然。 返回的地圖支持該地圖支持的所有可選地圖操作。

返回的映射將在嘗試在其范圍之外插入鍵時(shí)拋出 IllegalArgumentException。

參數(shù):

參數(shù)名稱 參數(shù)描述
toKey 返回映射中鍵的高端(不包括)

返回:

此map部分的視圖,其鍵嚴(yán)格小于 toKey

Throws:

Throw名稱 Throw描述
ClassCastException 如果 toKey 與此map的比較器不兼容(或者,如果map沒有比較器,如果 toKey 沒有實(shí)現(xiàn) Comparable)。 如果 toKey 無法與map中當(dāng)前的鍵進(jìn)行比較,則實(shí)現(xiàn)可以但不是必須拋出此異常。
NullPointerException 如果 toKey 為空并且此映射不允許空鍵
IllegalArgumentException 如果此map本身具有受限范圍,并且 toKey 位于范圍之外

tailMap

SortedMapK,V tailMap(K fromKey)

返回此map部分的視圖,其鍵大于或等于 fromKey。 返回的map由此map支持,因此返回map中的更改會(huì)反映在此map中,反之亦然。 返回的map支持該map支持的所有可選map操作。

返回的映射將在嘗試在其范圍之外插入鍵時(shí)拋出 IllegalArgumentException。

參數(shù):

參數(shù)名稱 參數(shù)描述
fromKey 返回映射中鍵的低端點(diǎn)(包括)

返回:

此map部分的視圖,其鍵大于或等于 fromKey

Throws:

Throw名稱 Throw描述
ClassCastException 如果 fromKey 與此映射的比較器不兼容(或者,如果映射沒有比較器,如果 fromKey 未實(shí)現(xiàn) Comparable)。 如果無法將 fromKey 與當(dāng)前映射中的鍵進(jìn)行比較,則實(shí)現(xiàn)可以但不是必須拋出此異常。
NullPointerException 如果 fromKey 為空且此映射不允許空鍵
IllegalArgumentException 如果此map本身具有限制范圍,并且 fromKey 位于范圍范圍之外

firstKey

K firstKey()

返回此映射中當(dāng)前的第一個(gè)(最低)鍵。

返回:

當(dāng)前此map中的第一個(gè)(最低)鍵

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果這個(gè)map是空的

lastKey

K lastKey()

返回此映射中當(dāng)前的最后一個(gè)(最高)鍵。

返回:

當(dāng)前在此map中的最后一個(gè)(最高)鍵

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果這個(gè)map是空的

keySet

SetK keySet()

返回此映射中包含的鍵的 Set 視圖。 集合的迭代器按升序返回鍵。 集合由map支持,因此對(duì)map的更改會(huì)反映在集合中,反之亦然。 如果在對(duì)集合進(jìn)行迭代時(shí)修改了映射(通過迭代器自己的刪除操作除外),則迭代的結(jié)果是不確定的。 該集合支持元素移除,即通過 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作從映射中移除相應(yīng)的映射。 它不支持 add 或 addAll 操作。

指定者:

接口 MapK,V 中的 keySet

返回:

此映射中包含的鍵的集合視圖,按升序排序

values

CollectionV values()

返回此映射中包含的值的集合視圖。 集合的迭代器按相應(yīng)鍵的升序返回值。 集合由map支持,因此對(duì)map的更改會(huì)反映在集合中,反之亦然。 如果在對(duì)集合進(jìn)行迭代時(shí)修改了映射(通過迭代器自己的刪除操作除外),則迭代的結(jié)果是不確定的。 該集合支持元素移除,即通過 Iterator.remove、Collection.remove、removeAll、retainAll 和 clear 操作從映射中移除相應(yīng)的映射。 它不支持 add 或 addAll 操作。

指定者:

接口 MapK,V 中的值

返回:

此映射中包含的值的集合視圖,按升序鍵排序

entrySet

Set<Map.Entry<K,V>> entrySet()

返回此映射中包含的映射的 Set 視圖。 集合的迭代器以升序鍵順序返回條目。 集合由map支持,因此對(duì)map的更改會(huì)反映在集合中,反之亦然。 如果在對(duì)集合進(jìn)行迭代時(shí)修改了映射(除了通過迭代器自己的刪除操作,或通過迭代器返回的映射條目上的 setValue 操作),則迭代的結(jié)果是未定義的。 該集合支持元素移除,即通過 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作從映射中移除相應(yīng)的映射。 它不支持 add 或 addAll 操作。

指定者:

接口 MapK,V 中的 entrySet

返回:

此映射中包含的映射的集合視圖,按升序鍵排序

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)