【问题标题】:Questions about Java's library map classes?关于 Java 的库地图类的问题?
【发布时间】:2017-03-23 20:55:38
【问题描述】:

答案是 (2) 和 (4),但不知道为什么。我对这些主题没有太多基础。有人可以解释为什么这些是正确的答案以及为什么其他答案不正确。 谢谢

【问题讨论】:

  • 这些问题你可以在 StackOverflow 和万维网上得到答案。
  • 2 是微不足道的,it says so in the Javadoc : Map: An object that maps keys to values. A map cannot contain duplicate keys; each key can map to at most one value.
  • 映射基本上是键值对的列表。一个限制是密钥是唯一的,因此可以与其他密钥区分开来。它有点像您汽车上的车牌——它本身是独一无二的,并且与汽车(价值)相关联。如果警察想再次查找是哪只驴超速,它可以查找它看到的车牌并检查相关值
  • HashMap、LinkedHashMap 和 TreeMap 是 Map 设计的 3 种不同实现——从外部看,它们都具有 Map 应该能够做的能力(基本上是获取值、设置值和删除一个值)。
  • 您可以在不知道为什么 2 和 4 是正确答案的情况下提出问题,但至少告诉我们您所做的研究以及您所了解的内容。那么在正确的水平上写一个答案就容易多了。

标签: java data-structures hashmap maps treemap


【解决方案1】:

HashMap 是一种由键和值组成的数据结构。值与关联的键一起存储在 HashMap 中。然后可以通过使用与放入值时使用的键相同的键从 HashMap 中调用来检索值。

1

TreeMaps 和 LinkedHashMaps 是 Map 的不同版本。 HashMap 使用散列来存储其键,而 TreeMap 使用二叉搜索树来存储其键,而 LinkedHashMap 使用 LinkedList 来存储键。如果您遍历 HashMap,键将按哈希排序顺序返回(在大多数情况下不可预测),因为它们就是这样存储的。然而,TreeMap 有一个包含所有值的树,因此当您遍历该树时,您将按实际排序顺序获得所有键。 LinkedHashMap 的键在有序列表中,因此迭代器将按照插入键的顺序返回键。

2、3 和 5

在 HashMap 中,使用它们的键查找值。如果您有重复的键,则 HashMap 无法知道要返回哪个值。因此,HashMap 中的每个键都必须是唯一的,但值不必是唯一的。

4

在普通的 HashMap 中,键被散列,然后插入到适当的位置。使用 TreeMap 和 LinkedHashMap,您需要将键插入树或链表中的额外开销,这将占用额外的时间和内存。

【讨论】:

  • 详尽的解释。并且很好地解释了为什么 2 是正确的。看来您并没有很清楚地区分 map 和 hash map。并非所有地图都是哈希地图。树形图不是哈希图的特殊版本——它是完全不同的地图实现。
  • 谢谢 -- 已更新以反映您建议的更改
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
  • 2023-04-01
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
  • 2011-03-28
相关资源
最近更新 更多