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 创建时提供的排序方式(具体取决于使用哪个构造函数),对地图进行排序。
此实现为和 getput remove操作提供有保证的 containsKeylog(n) 时间成本。 算法是 Cormen、Leiserson 和 Rivest em <>Algorithms</em> 简介中的算法的改编。
请注意,如果此排序映射正确实现Map接口,则树状图维护的顺序(如任何已排序的映射)以及是否提供显式比较器,都必须><与 equals</em> 保持一致。 (请参阅Comparable或Comparator获取与 equals</em> 一致的 em>的精确定义<)这是因为Map接口在操作方面equals进行了定义,但已排序的映射使用其 compareTo (或compare) 方法执行所有键比较,因此此方法认为相等的两个键从排序的映射的角度来看是相等的。 即使排序与排序不一致equals,已排序的映射 <em>的行为也<已>得到很好的定义;它只是不服从接口的Map一般协定。
<强>请注意,此实现未同步。</strong> 如果多个线程同时访问映射,并且至少有一个线程在结构上修改映射,则 <它>必须</em> 在外部同步。 (结构修改是添加或删除一个或多个映射的任何操作;仅更改与现有键关联的值不是结构修改。这通常是通过在自然封装地图的某些对象上进行同步来实现的。 如果不存在此类对象,则应使用 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 中添加。
适用于 . 的 java.util.TreeMapJava 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
| TreeMap() |
使用其键的自然顺序构造一个新的空树映射。 |
| TreeMap(IComparator) |
构造一个新的空树映射,根据给定的比较器进行排序。 |
| TreeMap(IDictionary) |
构造一个新的树状图,其中包含与给定映射相同的映射,根据<>其键的自然排序/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, 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 通知/em> 或 <em>interrupted</em>。<>< (继承自 Object) |
| Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。 (继承自 Object) |
| Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <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) |
基于红黑树的 |