TreeMap 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
以紅黑樹狀結構為基礎的 NavigableMap
實作。
[Android.Runtime.Register("java/util/TreeMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class TreeMap : Java.Util.AbstractMap, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.ICloneable, Java.Util.INavigableMap
[<Android.Runtime.Register("java/util/TreeMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type TreeMap = class
inherit AbstractMap
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface ICloneable
interface INavigableMap
interface ISortedMap
interface IMap
- 繼承
- 屬性
- 實作
備註
以紅黑樹狀結構為基礎的 NavigableMap
實作。 根據其索引鍵的可比較自然順序,或根據使用哪一個 Comparator
建構函式,在地圖建立時間提供來排序地圖。
此實作提供、 get
put
和 remove
作業的containsKey
保證log(n) 時間成本。 演算法是 Cormen、Leiserson 和 Rivest <的 em>Algorithms</em> 簡介中的演算法的改編。
請注意,樹形圖所維護的順序,就像任何已排序的對應一樣,以及是否提供明確的比較子,如果這個排序的對應是正確實Map
作 介面,就必須<>與 equals
</em> 一致。 (如需與 equals</em> 一致之 em>的<精確定義,請參閱 Comparable
或Comparator
Map
這是因為介面是以作業來equals
定義,但是排序的對應會使用其 compareTo
(或compare
) 方法執行所有索引鍵比較,因此,從排序的對應的觀點來看,這個方法視為相等的兩個索引鍵是相等的。 排序的對應 <em 的行為是</em> 定義完善的,即使其排序與 不一致equals
;它只是無法遵守介面的Map
>一般合約。
<強>請注意,此實作不會同步處理。</strong> 如果多個線程同時存取對應,而且至少有一個線程在結構上修改對應,則必須<<>/em> 在外部同步處理。 (結構修改是新增或刪除一或多個對應的任何作業;只是變更與現有索引鍵相關聯的值不是結構修改。這通常是藉由在自然封裝地圖的某些對象上進行同步處理來完成。 如果不存在這類物件,則對應應該使用 Collections#synchronizedSortedMap Collections.synchronizedSortedMap
方法「包裝」。 這最好是在建立時完成,以防止意外未同步存取地圖:
SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));
由這個類別之「集合檢視方法」所傳回之集合方法所傳回 iterator
的反覆運算器是 <em>fail-fast</em>:如果在建立反覆運算器之後隨時以結構化方式修改對應,則除了透過反覆運算器自己的 remove
方法之外,反覆運算器將會擲回 ConcurrentModificationException
。 因此,面對並行修改,反覆運算器會快速且乾淨地失敗,而不是在未來不確定的時間冒著任意、不具決定性的行為的風險。
請注意,Iterator 的失敗快速行為無法保證,一般來說,不可能在未同步處理並行修改的情況下進行任何硬式保證。 快速反覆運算器會盡最大努力擲回 ConcurrentModificationException
。 因此,撰寫依賴此例外狀況的程序正確性是錯誤的: <而>反覆運算器的失敗快速行為應該只用來偵測 Bug。</em>
這個類別中方法傳回的所有 Map.Entry
配對及其檢視,代表在產生對應時對應的快照集。 它們沒有 <強>式/<強式> 支援 Entry.setValue
方法。 不過,請注意,您可以使用 變更相關聯地圖中的對應 put
。
這個類別是 Java Collections Framework 的成員。
已在1.2中新增。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
建構函式
TreeMap() |
使用其索引鍵的自然順序,建構新的空白樹形圖。 |
TreeMap(IComparator) |
根據指定的比較子來建構新的空白樹狀結構圖。 |
TreeMap(IDictionary) |
根據其索引鍵的自然排序</em>,<>建構包含與指定對應相同的對應的新樹狀結構對應。 |
TreeMap(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。 |
屬性
Class |
傳回這個 |
Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
IsEmpty |
要新增 (繼承來源 AbstractMap) |
JniIdentityHashCode |
以紅黑樹狀結構為基礎的 |
JniPeerMembers |
以紅黑樹狀結構為基礎的 |
PeerReference |
以紅黑樹狀結構為基礎的 |
ThresholdClass |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 |
ThresholdType |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 |
方法
CeilingEntry(Object) |
以紅黑樹狀結構為基礎的 |
CeilingKey(Object) |
已在1中新增。 |
Clear() |
要新增 (繼承來源 AbstractMap) |
Clone() |
傳回這個 |
Comparator() |
傳回用來比較這個排序對應中索引鍵的比較子,如果自然順序正在使用中,則傳回 null。 |
ContainsKey(Object) |
要新增 (繼承來源 AbstractMap) |
ContainsValue(Object) |
要新增 (繼承來源 AbstractMap) |
DescendingKeySet() |
已在1中新增。 |
DescendingMap() |
已在1中新增。 |
Dispose() |
以紅黑樹狀結構為基礎的 |
Dispose(Boolean) |
以紅黑樹狀結構為基礎的 |
EntrySet() |
傳 |
Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
FirstEntry() |
傳回與此對應中最小索引鍵相關聯的索引鍵/值對應,如果 |
FirstKey() |
傳回這個排序對應中的最小索引鍵。 |
FloorEntry(Object) |
以紅黑樹狀結構為基礎的 |
FloorKey(Object) |
已在1中新增。 |
ForEach(IBiConsumer) |
以紅黑樹狀結構為基礎的 |
Get(Object) |
要新增 (繼承來源 AbstractMap) |
GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
HeadMap(Object, Boolean) |
已在1中新增。 |
HeadMap(Object) |
以紅黑樹狀結構為基礎的 |
HigherEntry(Object) |
以紅黑樹狀結構為基礎的 |
HigherKey(Object) |
已在1中新增。 |
JavaFinalize() |
當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。 (繼承來源 Object) |
KeySet() |
要新增 (繼承來源 AbstractMap) |
LastEntry() |
傳回與此對應中最大索引鍵相關聯的索引鍵/值對應,如果 |
LastKey() |
傳回這個排序對應中最大的索引鍵。 |
LowerEntry(Object) |
以紅黑樹狀結構為基礎的 |
LowerKey(Object) |
已在1中新增。 |
NavigableKeySet() |
已在1中新增。 |
Notify() |
喚醒正在等候此物件監視器的單一線程。 (繼承來源 Object) |
NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
PollFirstEntry() |
移除並傳回與此對應中最小索引鍵相關聯的索引鍵/值對應,如果 |
PollLastEntry() |
移除並傳回與此對應中最大索引鍵相關聯的索引鍵/值對應,如果 |
Put(Object, Object) |
要新增 (繼承來源 AbstractMap) |
PutAll(IDictionary) |
要新增 (繼承來源 AbstractMap) |
Remove(Object) |
要新增 (繼承來源 AbstractMap) |
Replace(Object, Object, Object) |
以紅黑樹狀結構為基礎的 |
Replace(Object, Object) |
以紅黑樹狀結構為基礎的 |
ReplaceAll(IBiFunction) |
以紅黑樹狀結構為基礎的 |
SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
Size() |
要新增 (繼承來源 AbstractMap) |
SubMap(Object, Boolean, Object, Boolean) |
已在1中新增。 |
SubMap(Object, Object) |
以紅黑樹狀結構為基礎的 |
TailMap(Object, Boolean) |
已在1中新增。 |
TailMap(Object) |
以紅黑樹狀結構為基礎的 |
ToArray<T>() |
以紅黑樹狀結構為基礎的 |
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
UnregisterFromRuntime() |
以紅黑樹狀結構為基礎的 |
Values() |
要新增 (繼承來源 AbstractMap) |
Wait() |
讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<> (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
Wait(Int64) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
明確介面實作
IJavaPeerable.Disposed() |
以紅黑樹狀結構為基礎的 |
IJavaPeerable.DisposeUnlessReferenced() |
以紅黑樹狀結構為基礎的 |
IJavaPeerable.Finalized() |
以紅黑樹狀結構為基礎的 |
IJavaPeerable.JniManagedPeerState |
以紅黑樹狀結構為基礎的 |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
以紅黑樹狀結構為基礎的 |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
以紅黑樹狀結構為基礎的 |
IJavaPeerable.SetPeerReference(JniObjectReference) |
以紅黑樹狀結構為基礎的 |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
以紅黑樹狀結構為基礎的 |
GetJniTypeName(IJavaPeerable) |
以紅黑樹狀結構為基礎的 |