Map
和Map.Entry<K,V>
界面之间有什么区别(如果有的话),Map.Entry<K,V>
界面的目的是什么?
答案 0 :(得分:3)
b.a
接口描述了存储键值条目的数据结构。 Map
接口描述了这些条目的结构,存储并提供了一种检索关联键和值的方法(取决于实现)。
这些接口由实现接口描述的功能的具体类实现。
地图文档:https://docs.oracle.com/javase/8/docs/api/java/util/Map.html
Map.Entry docs:https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html
答案 1 :(得分:-1)
界面 Map.Entry
接口图
公共接口 Map
Map 界面提供了三个集合视图,允许将地图的内容视为一组键、一组值或一组键值映射。地图的顺序定义为地图集合视图上的迭代器返回其元素的顺序。一些地图实现,如 TreeMap 类,对它们的顺序做出特定保证;其他的,比如 HashMap 类,没有。
注意:如果将可变对象用作映射键,则必须非常小心。如果对象的值以影响等于比较的方式更改,而对象是映射中的键,则不会指定映射的行为。此禁令的一个特殊情况是不允许映射将自身包含为键。虽然允许映射将自身包含为值,但建议格外小心:在此类映射上不再明确定义 equals 和 hashCode 方法。
所有通用地图实现类都应该提供两个“标准”构造函数:一个 void(无参数)构造函数,它创建一个空地图,一个带有 Map 类型的单个参数的构造函数,它创建一个具有相同参数的新地图。键值映射作为其参数。实际上,后一个构造函数允许用户复制任何映射,生成所需类的等效映射。没有办法强制执行此建议(因为接口不能包含构造函数),但 JDK 中的所有通用映射实现都符合要求。
此接口中包含的“破坏性”方法,即修改它们操作的地图的方法,如果此地图不支持该操作,则指定抛出 UnsupportedOperationException。在这种情况下,如果调用对地图没有影响,则这些方法可能(但不是必需)抛出 UnsupportedOperationException。例如,如果要“叠加”映射的映射为空,则在不可修改的映射上调用 putAll(Map) 方法可能(但不是必需)抛出异常。
某些地图实现对它们可能包含的键和值有限制。例如,有些实现禁止空键和值,有些实现对其键的类型有限制。尝试插入不合格的键或值会引发未经检查的异常,通常为 NullPointerException 或 ClassCastException。尝试查询不合格的键或值的存在可能会引发异常,或者可能只是返回 false;一些实现会表现出前一种行为,而另一些会表现出后者。更一般地,尝试对不合格的键或值执行操作,其完成不会导致不合格的元素插入到映射中,可能会引发异常,也可能会成功,具体取决于实现的选择。此类异常在此接口的规范中标记为“可选”。
Collections Framework 接口中的许多方法都是根据 equals 方法定义的。例如, containsKey(Object key) 方法的规范说:“当且仅当此映射包含键 k 的映射使得 (key==null ? k==null : key.equals(k) )”本规范不应被解释为暗示使用非空参数键调用 Map.containsKey 将导致为任何键 k 调用 key.equals(k)。实现可以自由地实现优化,从而避免 equals 调用,例如,通过首先比较两个键的哈希码。 (Object.hashCode() 规范保证哈希码不相等的两个对象不能相等。)更一般地说,各种集合框架接口的实现可以自由地利用底层对象方法的指定行为,只要实现者认为合适.
某些执行映射递归遍历的映射操作可能会失败,但映射直接或间接包含自身的自引用实例除外。这包括 clone()、equals()、hashCode() 和 toString() 方法。实现可以选择处理自引用场景,但大多数当前实现都没有这样做。
该接口是 Java 集合框架的成员。
因为: 1.2
https://docs.oracle.com/javase/8/docs/api/java/util/Map.html https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html