两张地图之间的差异
我需要非常有效地比较Clojure/Java中的两个映射,并返回由Java的.equals(..)确定的差异,nil/null相当于“不存在”。
也就是说,我正在寻找编写函数的最有效方法,例如:
(map-difference
{:a 1, :b nil, :c 2, :d 3}
{:a 1, :b "Hidden", :c 3, :e 5})
=> {:b nil, :c 2, :d 3, :e nil}
我更喜欢一个不可变的Clojure映射作为输出,但如果性能改进是显着的,Java映射也会很好。
对于它的价值,我对行为的基本测试用例/期望是,对于任何两个映射a和b,以下内容将相等(直到null = “不存在”的等价性):
a
(merge b (difference a b))
实现此目的的最佳方法是什么?