合并两个TreeMap,同时跳过Java中的第一个条目

我有两个要合并的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, 稳定, 可靠

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值