IMap 接口

定义

将键映射到值的 对象。

[Android.Runtime.Register("java/util/Map", "", "Java.Util.IMapInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public interface IMap : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/Map", "", "Java.Util.IMapInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type IMap = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
派生
属性
实现

注解

将键映射到值的 对象。 映射不能包含重复键;每个键最多可以映射到一个值。

此接口取代 Dictionary 类,类是一个完全抽象的类,而不是接口。

接口 Map 提供三个 集合视图,这些视图允许将映射的内容作为一组键、值集合或键值映射集进行查看。 映射 的顺序 定义为地图集合视图中的迭代器返回其元素的顺序。 某些映射实现(如 类) TreeMap 对其顺序做出具体保证;其他(如 HashMap 类)则不保证。

注意:如果将可变对象用作映射键,则必须非常小心。 如果对象的值以影响 equals 比较的方式更改,而对象是映射中的键,则不指定映射的行为。 此禁令的一个特殊情况是,不允许地图将自身作为键包含在内。 虽然允许地图将自身作为值进行包含,但建议格外小心: equals 在此类地图上不再很好地定义 和 hashCode 方法。

所有常规用途映射实现类都应提供两个“标准”构造函数:一个 void (无参数) 构造函数(用于创建空映射)和一个构造函数,一个具有单个类型 Map参数的构造函数,后者使用与其参数相同的键值映射创建新映射。 实际上,后一个构造函数允许用户复制任何映射,从而生成所需类的等效映射。 无法 (强制实施此建议,因为接口不能包含构造函数) 但 JDK 中的所有常规用途映射实现都符合要求。

如果此映射不支持操作,则指定在此接口中包含的“破坏性”方法(即修改它们所操作的映射的方法)引发 UnsupportedOperationException 。 如果是这种情况,如果调用对地图没有影响,则这些方法可能会引发 UnsupportedOperationException (但不是必需的) 。 例如,如果映射要“叠加”的映射为空,则在不可修改的映射上调用 #putAll(Map) 方法可能会引发异常,但不是必需的。

某些映射实现对它们可能包含的键和值有限制。 例如,某些实现禁止 null 键和值,有些实现对其键类型有限制。 尝试插入不合格的键或值会引发未选中的异常,通常为 NullPointerExceptionClassCastException。 尝试查询是否存在不合格的键或值可能会引发异常,或者可能只返回 false;一些实现将展示前一种行为,而有些则显示后者。 更一般地,尝试对不合格的键或值(其完成不会导致将不合格元素插入映射)的操作可能会引发异常,或者它可能会成功(在实现的选项下)。 此类异常在此接口的规范中标记为“可选”。

集合框架接口中的许多方法都是根据 Object#equals(Object) equals 方法定义的。 例如,方法的#containsKey(Object) containsKey(Object key)规范显示:“仅当且仅当此映射包含这样的(key==null ? k==null : key.equals(k))k的映射时,才会返回 true不应将此规范解释为暗示使用非 null 参数key调用Map.containsKey将导致key.equals(k)调用任何键 k。 实现可以自由实现可避免调用的 equals 优化,例如,首先比较两个键的哈希代码。 (规范 Object#hashCode() 保证具有不相等哈希代码的两个对象不能相等。) 更一般地,各种集合框架接口的实现可在实现者认为合适的任何位置自由利用基础 Object 方法的指定行为。

某些对映射执行递归遍历的映射操作可能会失败,但对于地图直接或间接包含自身的自引用实例,则异常。 这包括 clone()equals()hashCode()toString() 方法。 实现可以选择性地处理自引用方案,但大多数当前的实现不会这样做。

<h2>“unmodifiable”>Unmodifiable Maps</h2>

Map#of() Map.ofMap#ofEntries(Map.Entry...) Map.ofEntriesMap#copyOf Map.copyOf 静态工厂方法提供了一种创建不可修改的映射的便捷方法。 这些 Map 方法创建的实例具有以下特征:

<ul>li 他们是 i unmodifiable</i>.><>< 无法添加、删除或更新键和值。 在 Map 上调用任何 mutator 方法始终会导致 UnsupportedOperationException 引发。 但是,如果包含的键或值本身是可变的,这可能会导致映射的行为不一致或其内容看起来发生更改。 <li>它们不允许 null 键和值。 尝试使用 null 键或值创建它们会导致 NullPointerException。 <如果>所有键和值都是可序列化的,则它们可序列化。 <li>它们在创建时拒绝重复密钥。 传递给静态工厂方法的重复键会导致 出现 IllegalArgumentException。 <li>映射的迭代顺序未指定,可能会发生更改。 <li>它们是基于值的。 程序员应将 #equals (对象) 的实例视为可互换的实例,不应将其用于同步,否则可能会出现不可预知的行为。 例如,在将来的版本中,同步可能会失败。 调用方不应对返回的实例的标识做出假设。 工厂可以自由创建新实例或重复使用现有实例。 <li>它们按序列化窗体页上的指定进行 序列化 。 </ul>

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

在 1.2 中添加。

java.util.MapJava 文档。

此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。

属性

Handle

获取基础 Android 对象的 JNI 值。

(继承自 IJavaObject)
IsEmpty

返回此映射是否为空。

JniIdentityHashCode

返回包装实例的 的值 java.lang.System.identityHashCode()

(继承自 IJavaPeerable)
JniManagedPeerState

托管对等方的状态。

(继承自 IJavaPeerable)
JniPeerMembers

成员访问和调用支持。

(继承自 IJavaPeerable)
PeerReference

返回 JniObjectReference 包装的 Java 对象实例的 。

(继承自 IJavaPeerable)

方法

Clear()

从此映射中删除所有映射, (可选操作) 。

Compute(Object, IBiFunction)

如果当前没有映射) ,则尝试计算指定键及其当前映射值的映射 (null

ComputeIfAbsent(Object, IFunction)

如果指定的键尚未与 (的值关联或映射到 null) ,则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非 null

ComputeIfPresent(Object, IBiFunction)

如果指定键的值存在且非 null,则尝试在给定键及其当前映射值的情况下计算新的映射。

ContainsKey(Object)

true如果此映射包含指定键的映射,则返回 。

ContainsValue(Object)

true如果此映射将一个或多个键映射到指定值,则返回 。

CopyOf(IDictionary)

返回一个不可修改的 Map,其中包含给定 Map 的条目。

Disposed()

释放实例时调用。

(继承自 IJavaPeerable)
DisposeUnlessReferenced()

如果没有对此实例的未完成引用,则调用 Dispose();否则,不执行任何操作。

(继承自 IJavaPeerable)
Entry(Object, Object)

返回包含给定键和值的不可变 Entry 值。

EntrySet()

返回 Set 此映射中包含的映射的视图。

Equals(Object)

将指定的对象与此映射相等性进行比较。

Finalized()

在实例完成时调用。

(继承自 IJavaPeerable)
ForEach(IBiConsumer)

对此映射中的每个条目执行给定操作,直到所有条目都已处理或操作引发异常。

Get(Object)

返回指定键映射到的值,或者 null 如果此映射不包含键的映射,则返回值。

GetHashCode()

返回此映射的哈希代码值。

GetOrDefault(Object, Object)

返回指定键映射到的值,或者 defaultValue 如果此映射不包含键的映射,则返回值。

KeySet()

返回 Set 此映射中包含的键的视图。

Merge(Object, Object, IBiFunction)

如果指定的键尚未与值关联或与 null 相关联,则将其与给定的非 null 值相关联。

Of()

返回包含零映射的不可修改映射。

Of(Object, Object)

返回包含单个映射的不可修改映射。

Of(Object, Object, Object, Object)

返回包含两个映射的不可修改映射。

Of(Object, Object, Object, Object, Object, Object)

返回包含三个映射的不可修改映射。

Of(Object, Object, Object, Object, Object, Object, Object, Object)

返回包含四个映射的不可修改映射。

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

返回包含五个映射的不可修改映射。

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

返回包含六个映射的不可修改映射。

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

返回包含七个映射的不可修改映射。

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

返回包含八个映射的不可修改映射。

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

返回包含九个映射的不可修改映射。

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

返回包含十个映射的不可修改映射。

OfEntries(IMapEntry[])

返回一个不可变映射,其中包含从给定条目中提取的键和值。

Put(Object, Object)

将指定值与此映射中的指定键相关联, (可选操作) 。

PutAll(IDictionary)

将指定映射中的所有映射复制到此映射, (可选操作) 。

PutIfAbsent(Object, Object)

如果指定的键尚未与值关联 (或映射到 null) 将其与给定值关联并返回 null,否则将返回当前值。

Remove(Object)

如果键存在 (可选操作) ,则从此映射中删除键的映射。

Remove(Object, Object)

仅当指定键当前映射到指定值时才删除该项。

Replace(Object, Object)

仅当指定键当前映射到某个值时,才替换指定键的条目。

Replace(Object, Object, Object)

仅当当前映射到指定值时,才替换指定键的条目。

ReplaceAll(IBiFunction)

将每个条目的值替换为在该条目上调用给定函数的结果,直到所有条目都已处理或函数引发异常。

SetJniIdentityHashCode(Int32)

设置 返回 JniIdentityHashCode的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

将键映射到值的 对象。

(继承自 IJavaPeerable)
SetPeerReference(JniObjectReference)

设置 返回 PeerReference的值。

(继承自 IJavaPeerable)
Size()

返回此映射中的键值映射数。

UnregisterFromRuntime()

取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。

(继承自 IJavaPeerable)
Values()

返回 Collection 此映射中包含的值的视图。

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

将键映射到值的 对象。

GetJniTypeName(IJavaPeerable)

将键映射到值的 对象。

适用于