TreeMap 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
基于 NavigableMap
树 Red-Black 实现。
[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
树 Red-Black 实现。 根据键的可比自然顺序或地图 Comparator
创建时提供的 进行排序,具体取决于使用的构造函数。
此实现为 、 get
put
和 remove
操作提供有保证的日志 (n) 时间成本containsKey
。 算法是科门、莱森和里维斯特的<>《算法<简介》中的算法的>改编。
请注意,如果此排序映射要正确实现 接口,则树状映射维护的顺序(与任何排序的映射一样,以及是否提供显式比较器)必须与 <>/em> 保持一致equals
<。Map
(请参阅 Comparable
或 Comparator
获取与 equals</em>.) 一致的 em>的精确定义<,这是因为Map
接口是按照操作来equals
定义的,但排序映射使用其 compareTo
(或 compare
) 方法执行所有键比较,因此,从排序映射的角度来看,此方法视为相等的两个键是, 平等。 即使排序与 equals
不一致,排序映射 <em>的行为也<>定义得非常明确;它只是不符合接口的Map
常规协定。
<强>请注意,此实现不同步。</strong> 如果多个线程同时访问映射,并且至少有一个线程在结构上修改映射,则必须<<>>在外部同步。 (结构修改是添加或删除一个或多个映射的任何操作;仅更改与现有键关联的值不是结构修改。) 这通常是通过在自然封装映射的某个对象上同步来实现的。 如果不存在此类对象,则应使用 Collections#synchronizedSortedMap Collections.synchronizedSortedMap
方法“包装”映射。 最好在创建时执行此操作,以防止意外对地图进行非同步访问:
SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));
由此类的所有“集合视图方法”返回的集合的 方法返回 iterator
的迭代器为 <em>fail-fast</em>:如果在创建迭代器后随时对映射进行结构修改(除了通过迭代器自己的 remove
方法之外的任何方式),则迭代器将引发 ConcurrentModificationException
。 因此,面对并发修改,迭代器会快速且干净地失败,而不会在将来不确定的时间冒着任意、非确定性行为的风险。
请注意,无法保证迭代器的快速故障行为,因为一般来说,在出现非同步并发修改的情况下,不可能做出任何硬性保证。 故障快速迭代器会尽最大努力引发 ConcurrentModificationException
。 因此,编写依赖于此异常的程序的正确性是错误的: <迭代>器的快速故障行为应仅用于检测 bug。</Em>
此类中的方法及其视图返回的所有 Map.Entry
对都表示生成映射时的快照。 它们不 <强>/<强> 支持 Entry.setValue
方法。 (请注意,可以使用 put
.)
此类是 Java 集合框架的成员。
在 1.2 中添加。
此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。
构造函数
TreeMap() |
使用其键的自然顺序构造新的空树映射。 |
TreeMap(IComparator) |
构造新的空树映射,根据给定比较器进行排序。 |
TreeMap(IDictionary) |
构造一个新的树映射,其中包含与给定映射相同的映射,根据其键的 <em>自然顺序</em> 排序。 |
TreeMap(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
属性
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
IsEmpty |
要添加 (继承自 AbstractMap) |
JniIdentityHashCode |
基于 |
JniPeerMembers |
基于 |
PeerReference |
基于 |
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不应直接从代码使用。 |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不应直接从代码使用。 |
方法
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) |
基于 |
HeadMap(Object, Boolean) |
在 1 中添加。 |
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) |
基于 |
Replace(Object, Object, Object) |
基于 |
ReplaceAll(IBiFunction) |
基于 |
SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
Size() |
要添加 (继承自 AbstractMap) |
SubMap(Object, Boolean, Object, Boolean) |
在 1 中添加。 |
SubMap(Object, Object) |
基于 |
TailMap(Object) |
基于 |
TailMap(Object, Boolean) |
在 1 中添加。 |
ToArray<T>() |
基于 |
ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
UnregisterFromRuntime() |
基于 |
Values() |
要添加 (继承自 AbstractMap) |
Wait() |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<> (继承自 Object) |
Wait(Int64) |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<> (继承自 Object) |
Wait(Int64, Int32) |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/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) |
基于 |