前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TreeMap踩坑

TreeMap踩坑

作者头像
阿超
发布2023-09-03 08:39:06
1400
发布2023-09-03 08:39:06
举报
文章被收录于专栏:快乐阿超快乐阿超

不降志,不屈身,不追赶时髦,也不回避危险。──胡适

今天使用TreeMap踩坑了

代码如下:

代码语言:javascript
复制
    @Test
void test() {
    Map<Integer, Object> map = new TreeMap<>(Comparator.comparing(i -> i % 2 == 0));
    map.put(2, 0);
    map.put(1, 0);
    map.put(3, 0);
    System.out.println(map);
}

输出结果却是

代码语言:javascript
复制
{1=0, 2=0}

这是因为Comparator里计算结果重复导致的,即便我们的key并不相同,也会被覆盖。。。

于是我们可以指定计算结果相同时策略:

代码语言:javascript
复制
@Test
void test() {
    Map<Integer, Object> map = new TreeMap<>(Comparator.<Integer, Boolean>comparing(i -> i % 2 == 0).thenComparing(Comparator.naturalOrder()));
    map.put(2, 0);
    map.put(1, 0);
    map.put(3, 0);
    System.out.println(map);
}

结果:

代码语言:javascript
复制
{1=0, 3=0, 2=0}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档