java中的合并映射

java中的合并映射,java,merge,maps,Java,Merge,Maps,我想做的很简单,我想合并两张地图。 说 如果我遵循这个-> map3.putall(map1); map3.putall(map2); 那么1的值是onetoo,但是当我按照相反的方向走的时候,它是一。 我的意思是java只覆盖并为一个键放置最新的值。 i、 e如果在各自的映射中在1之后添加onetoo,则无论putall调用map3的顺序如何,该值都保持为onetoo。除非存储添加值的实际时间,否则无法做到这一点 说map1={1,1,15:15,2,2,15:16} 然后,您可以添加所有m

我想做的很简单,我想合并两张地图。 说

如果我遵循这个->

map3.putall(map1);
map3.putall(map2);
那么1的值是onetoo,但是当我按照相反的方向走的时候,它是一。 我的意思是java只覆盖并为一个键放置最新的值。
i、 e如果在各自的映射中在1之后添加onetoo,则无论putall调用map3的顺序如何,该值都保持为onetoo。

除非存储添加值的实际时间,否则无法做到这一点

说map1={1,1,15:15,2,2,15:16}


然后,您可以添加所有map1,然后在map2上迭代添加,仅当该键不在那里,或者如果它在那里,但具有较早的时间戳。

除非存储添加值时的实际时间,否则无法这样做

说map1={1,1,15:15,2,2,15:16}


然后,您可以添加所有map1,然后在map2上迭代添加,仅当键不在那里,或者如果它在那里但具有较早的时间戳。

映射就是这样工作的,它们使用您设置为键的对象的哈希代码作为在映射项中标识其自身的一种方式,正如您所看到的,它必须是唯一的


因此,您必须指定另一个键,因为整数值1的哈希代码为1。

贴图就是这样工作的,它们使用设置为键的对象的哈希代码作为在贴图条目中标识其自身的方法,正如您所看到的,它必须是唯一的


因此,您必须指定另一个键,因为整数值1的hashcode为1。

如果您的程序按照您的意愿工作,那么请预测以下结果的输出

 map3.get(1);
你永远不可能知道它是一个还是一个

为了避免任何此类问题,Java中的映射被设计为只包含唯一键

所以,如果你写

map3.putall(map1);
map3.putall(map2);
1的值为1。但是一旦你写信

map3.putall(map1);
map3.putall(map2);
1的值被重置,并变为onetoo。反转发生在你反转它的时候。可能的解决办法是:

在贴图中输入关键点,使其关键点唯一地标识对象。因此,无论将来何时合并贴图,都不会因键的重复性而发生冲突

如果您不能做到这一点,那么一个可能的解决方案是获取每个贴图的所有关键点,检查重复性,并以这样一种方式更改重复的关键点,以便您可以轻松检索对象


好的,如果你的程序按照你想要的那样工作,那么预测以下的输出

 map3.get(1);
你永远不可能知道它是一个还是一个

为了避免任何此类问题,Java中的映射被设计为只包含唯一键

所以,如果你写

map3.putall(map1);
map3.putall(map2);
1的值为1。但是一旦你写信

map3.putall(map1);
map3.putall(map2);
1的值被重置,并变为onetoo。反转发生在你反转它的时候。可能的解决办法是:

在贴图中输入关键点,使其关键点唯一地标识对象。因此,无论将来何时合并贴图,都不会因键的重复性而发生冲突

如果您不能做到这一点,那么一个可能的解决方案是获取每个贴图的所有关键点,检查重复性,并以这样一种方式更改重复的关键点,以便您可以轻松检索对象


你能给出一个你想要创建的地图的例子吗?合并后你期望得到什么?你一定要创建一个例子来说明你的意思。但我认为如果你想实现这一点,你必须创建你自己的TimedMap extends Map,或者手动创建它,用相应的元素保存每个put的时间戳,并通过迭代你的映射进行合并,只添加元素,如果对应元素上没有带有该键和较低时间戳的条目。你能给出一个你希望它创建的映射的示例吗?合并后你期望得到什么?你一定要创建一个示例来说明你的意思。但我认为如果你想实现这一点,你必须创建你自己的TimedMap extends Map,或者手动创建它,用相应的元素保存每个put的时间戳,并通过迭代你的映射进行合并,只添加元素,如果没有相应元素上带有该键和较低时间戳的条目,我将尝试此项。我担心迭代开销,但由于没有出路,我将使用此项..感谢帮助我将尝试此项。我担心迭代开销,但由于没有出路,我将使用此项..感谢帮助词智者:方法大写为putAll,而非putAll:word to智者:方法大写为putAll,而非putAll: