2016-04-03 105 views
0

我想用Java编写我自己的Map。我知道地图是如何工作的,但我不知道你可以在哪里保存键和值。我可以让他们例如在列表中?所以钥匙将被存储在列表中,并且值将被存储在另一个列表中?Java中的集合映射

+1

是的,你可以做到这一点,如果你想。或者你可以创建一个'List',其中每个元素是一个键/值对(可能使用'MapEntry')。找出最简单的方法就是尝试。 –

+0

你的意思是'编写自己的地图实现'而不是使用标准java库中的实现吗? – 1ac0

+0

是的。那就是我的意思。 –

回答

0

如果您检查了HashMap,TreeMap,HeapMap等背后的一些概念,那么最好的方法是使用它。 一旦你理解了这些概念,当谈到速度的时候,你可以更好地编写自己的地图。换句话说,除非你知道所有可用实现的概念,否则你的车轮重新发明将是一个更好的解决方案,这是非常不可能的。 此外,请务必非常全面地测试您的实现,因为Collection是任何优秀应用程序的支柱和核心。

两个非常非常简单(但缓慢)的解决方案是这些:

1)正如上文所述,您可以使用ArrayList<Pair>并添加Java中自定义getItemByKey()(通常称为“得到”)方法。

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

0

对于选择数据结构,不会比Array(不是所有的时间都差不多)的条目(键/值)更好,因为映射的主要目标是为对象映射对象,因此将键映射到值。

使用数组实现快速和常量访问O(1),但是有一点问题,当地图已满时,必须创建新的Array并复制旧的条目。

注意:HashMap以同样的方式工作。