2016-04-03 133 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以同樣的方式工作。