当前位置: 首页 > 面试题库 >

为什么Map不扩展Collection接口

东郭俊楠
2023-03-14
问题内容

为什么java.util.Map接口不扩展java.util.Collection接口?不是java.util.Map键值对的集合吗?


问题答案:

集合假定一个值的元素。映射假定键/值对的条目。他们本来可以重新使用相同的通用接口,但是它们实现的某些方法不兼容,例如

Collection.remove(Object) - removes an element.
Map.remove(Object) - removes by key, not by entry.

您可以将Map建模为条目的集合,这就是这样Map.entrySet()做的。

有一些共同的方法。size()isEmpty()clear()putAll/addAll()但这些都不太可能有多少价值作为一个独立的接口。(Map.entrySet()可以再次使用)



 类似资料:
  • 问题内容: 事实并非如此,这让我感到惊讶。 我认为,如果这样声明,那将是很有意义的: 毕竟,是的集合,不是吗? 那么,为什么没有这样一个很好的实现呢? 感谢Cletus提供的最权威的答案,但是我仍然想知道为什么,如果你已经可以查看(通过),那么它不仅扩展了该接口。 如果a 是a ,则元素是什么?唯一合理的答案是“键值对” 确实会很棒! 但这提供了非常有限的(且不是特别有用的)Map抽象。 但是,如

  • 问题内容: 创建数组时,无法更改其大小;它是固定的。好的,看起来不错,我们可以创建一个新的更大的数组并逐个复制值,这有点慢。它的技术背景是什么? 问题答案: 这个问题没有提到语言,因此我将选择基于“ C”的数组作为答案。 数组被分配为单个内存块。增长数组是有问题的,因为正确执行此操作的唯一方法是在最后增长它。为了增加大小N,在数组的末尾必须在下一个分配的地址之前至少有N个空闲字节。 要支持这种类型

  • 问题内容: 我看到了这个问题,使用以下代码: 我想知道为什么我们不只是直接扩展?或在类似情况下扩展为什么要用 这样做是为了增加我们的意图,当其他开发人员来访时,他们会看到此类符合Flashable,Dimable等标准吗? 另外,我们的UIView会有单独的有意义的扩展吗?而不是UIView或UIViewController的其他未命名扩展? 关于POP这个主题,苹果是否有任何具体的指导方针?我已

  • 问题内容: 请考虑以下来自Shiro 界面的API方法,但也可能存在于其他库中: 是的,即使是现在,仍然有一些库使用原始类型,可能是为了保留Java 1.5之前的兼容性? 如果我现在想将此方法与流或类似的可选项一起使用: 我收到有关未经检查的转换和使用原始类型的警告,我更喜欢使用参数化类型。 蚀: 类型安全:方法collect(Collector)属于原始类型Stream。泛型类型Stream 的

  • 问题内容: 我想知道为什么在Java语言中a 不能扩展。 我不是在谈论一个延伸的(这不能做,因为Java没有多重继承,而Š隐含延长),但一类的以只添加额外的方法,而不是额外的枚举值。 就像是: 要这样使用: 因此,有人可以对此限制提供理由(或将我指向正确的JLS部分)吗? 问题答案: 我认为 他们这样做 的答案来自以下问题: 在您的示例中,如何实例化MyClass?用户永远不会(通过)显式实例化枚

  • 问题内容: 为什么Java中的许多Collection类都扩展Abstract类并实现接口(也由给定的Abstract类实现)? 例如,class t扩展了并且也实现了,但是已经实现了。 问题答案: 这是记住此类真正实现该接口的一种方式。 它不会有任何不良影响,并且可以帮助您理解代码,而无需遍历给定类的完整层次结构。