Java中的集合映射

Java中的集合映射,java,dictionary,collections,Java,Dictionary,Collections,我想用Java编写自己的地图。我知道map是如何工作的,但我真的不知道在哪里可以保存键和值。例如,我可以将它们保存在列表中吗?因此,键将存储在列表中,值将存储在另一个列表中?对于选择数据结构,没有什么比条目(键/值)的数组(并非所有时间,但几乎)更好,因为映射的主要目标是为对象映射对象,所以将键映射到值 使用数组快速、稳定地访问O(1),但您有一个小问题,当您的映射已满时,您必须创建新数组并复制旧条目 注意:HashMap的工作原理是相同的。最好是查看HashMap、TreeMap、HeapMa

我想用Java编写自己的地图。我知道map是如何工作的,但我真的不知道在哪里可以保存键和值。例如,我可以将它们保存在列表中吗?因此,键将存储在列表中,值将存储在另一个列表中?

对于选择数据结构,没有什么比条目(键/值)的数组(并非所有时间,但几乎)更好,因为映射的主要目标是为对象映射对象,所以将键映射到值

使用数组快速、稳定地访问O(1),但您有一个小问题,当您的映射已满时,您必须创建新数组并复制旧条目


注意:
HashMap
的工作原理是相同的。

最好是查看HashMap、TreeMap、HeapMap等背后的一些概念。 一旦您理解了这些概念,您就可以更好地准备在速度方面编写自己的地图

换句话说:除非您了解所有可用实现的概念,否则您的转轮再发明不太可能是更好的解决方案。 还要确保非常彻底地测试您的实现,因为集合是任何好的应用程序的主干和核心

以下是两种非常简单(但速度较慢)的解决方案:

1) 如上所述,您可以使用
ArrayList
并添加自定义的getItemByKey()(在Java中通常称为“get”)方法


2) 您可以使用两个数组,都保持相同的大小,并保持键和值与其各自的索引匹配。

是的,如果您愿意,可以这样做。或者您可以创建一个
列表
,其中每个元素都是一个键/值对(可能使用
映射条目
)。最简单的方法就是尝试。你的意思是
编写自己的映射实现
,而不使用标准java库中的实现吗?是的。这就是我的意思。