我想用Java编写自己的Map。我知道地图是如何工作的,但我真的不知道你可以在哪里保存键和值。我可以将它们保存在List中吗?所以密钥将存储在列表中,值将存储在另一个列表中?
答案 0 :(得分:0)
选择数据结构并不比Array
(并非所有时间,但几乎所有)条目(键/值)更好,因为map的主要目标是映射对象的对象,因此映射价值观的关键。
使用数组进行快速和常量访问O(1),但是你有一点问题,当地图已满时,你必须创建新数组并复制旧条目。
注意:HashMap
的工作方式相同。
答案 1 :(得分:0)
如果您查看了HashMap,TreeMap,HeapMap等背后的一些概念,那将是最好的。 一旦你理解了这些概念,你就可以更快地为自己的地图编写速度。
换句话说:除非您了解所有可用实施的概念,否则您的轮胎重新发明将不太可能成为更好的解决方案。 另外一定要非常彻底地测试您的实现,因为Collection是任何优秀应用程序的支柱和核心。
这两个非常简单(但很慢)的解决方案是:
1)如上所述,您可以使用ArrayList<Pair>
并添加自定义getItemByKey()(在Java中通常命名为&#39; get&#39;)方法。
2)你可以使用两个数组,它们保持相同的大小,并保持键和值与它们各自的索引相匹配。