【发布时间】:2013-06-16 20:24:23
【问题描述】:
我需要一个包含堆叠地图的 Map impl,我可以使用 push() 和 pop(),如果它们属于被推送/弹出的地图,则这些值将被“添加”或“删除”。并且这些值将被搜索顶部/底部(或可选的底部/顶部)。
在 JDK 或其他地方是否有现成的 impl?
例子:
- 堆栈
- 地图4
- foo => aaa
- 酒吧 => 45
- 地图3
- 酒吧 => 22
- 地图2
- foo => ccc
- baz => 呜呜
- 地图1
- 地图4
为此,get("baz") 将返回 "uuu",get("foo") 将返回 "aaa",size() 将返回 3 等。
这有点像 JavaScript 的原型继承。
有one impl 我希望有一些更复杂的 impl,它不会在我每次调用任何方法时真正遍历所有层。读取方法将比 push()/pop() 更频繁,因此在此期间可能会有一些预计算。
【问题讨论】:
-
你将如何在这里创建“外部地图”?
-
在 JDK 中没有这样的内置结构,但是使用
LinkedList<Map<K, V>>来编写你的实现会很容易 -
如果你需要栈是线程安全的,你可以使用
LinkedBlockingDeque<Map<K, V>> -
与Properties比较,可以有另一个Properties映射作为默认值。