TreeMap踩坑

简介: TreeMap踩坑

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

今天使用TreeMap踩坑了

代码如下:

    @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);
}

输出结果却是

{1=0, 2=0}

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

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

@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);
}

结果:

{1=0, 3=0, 2=0}
相关文章
|
7月前
|
存储 Java
每日一道面试题之谈一谈HashMap和HashSet的区别
每日一道面试题之谈一谈HashMap和HashSet的区别
|
8天前
|
存储 Serverless 容器
关于hashmap,希望能够帮到你
关于hashmap,希望能够帮到你
13 3
|
8天前
|
存储 设计模式 Java
|
8天前
|
设计模式 存储 缓存
LinkedHashMap源码学习
LinkedHashMap源码学习
LinkedHashMap源码学习
|
8天前
|
存储 Java Serverless
【面试问题】如何设计一个 HashMap?
【1月更文挑战第27天】【面试问题】如何设计一个 HashMap?
|
8天前
|
Java
认真学习Java集合之TreeMap的实现原理
认真学习Java集合之TreeMap的实现原理
26 0
|
8天前
|
缓存 算法 Java
认真学习Java集合之LinkedHashMap的实现原理
认真学习Java集合之LinkedHashMap的实现原理
45 0
认真学习Java集合之LinkedHashMap的实现原理
|
8天前
|
存储 算法 安全
认真学习Java集合之HashMap的实现原理
认真学习Java集合之HashMap的实现原理
32 0
认真学习Java集合之HashMap的实现原理
|
11月前
HashMap源码学习:红黑树原理详解
HashMap源码学习:红黑树原理详解
48 0
|
存储 C++ 索引
彻底理解 HashMap 及 LinkedHashMap,面试官请随便问!(2)
彻底理解 HashMap 及 LinkedHashMap,面试官请随便问!
彻底理解 HashMap 及 LinkedHashMap,面试官请随便问!(2)

热门文章

最新文章