我有两个要合并的TreeMap:
TreeMap<foo, bar> map1 = {key1=value1, key2=value2};
TreeMap<foo, bar> map2 = {key1=value6, key3=value3, key4=value4, key5=value5};
我想将这些地图合并到一个地图中,但是我想跳过第二张地图的第一项,因此我将得到以下内容:
TreeMap<foo, bar> result = {key1=value1, key2=value2, key3=value3, key4=value4, key5=value5};
但是,我无法调用map2.remove(map2.firstKey())甚至map2.remove(key1),因为equals在foo上无法正常工作.
有什么好方法吗?
(目前,我正在这样做,效果很好,但是我对此并不满意,我也不认为这是最好的方法:
TreeMap<foo, bar> result = new TreeMap<>();
result.putAll(map1);
for (Map.Entry<foo, bar> entry : Iterables.skip(map2.entrySet(), 1) ) {
result.put(entry.getKey(), entry.getValue());
}
)
最佳答案
您可以使用tailMap:
TreeMap<foo, bar> result = new TreeMap<>(map1);
result.putAll (map2.tailMap (map2.keySet().iterator().next(), false));
编辑:您不需要找到第二个键.您可以使用包含== false的tailMap运行tailMap,并将第一个键传递给它,该键将被排除.
Inm小程序商店
Inm小程序商店收录了最新,最热门的微信小程序和微信小游戏,是国内内容最丰富的集小程序游戏、小程序分发、小程序推广为一体的综合性小程序门户网站之一。
Vultr中文网
最低 $2.5/月 的VPS, 稳定, 可靠