`
bmqnc
  • 浏览: 127583 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

TreeMap中使用的陷阱之一

    博客分类:
  • java
JDK 
阅读更多
今天做TC,用到了TreeMap,用到了其中的一个方法pollFirstEntry(),但是发现这个方法是since 1.6的,而TC只支持到1.5的jdk,我试着改为先getFirstEntry().getKey(),然后对这个key做了一点操作,然后再remove(key),然后再put(key,value),结果发现pollFirstEntry能得到正确的结果,但用后一种却得不到正确的结果,结果分析了一下,是这样的:

关键出在对key做了一些操作后然后remove这个步骤上,实际上TreeMap中的R-B Tree在remove时会用key的自然排序查找这个key,而我在key中自己写了compare的方法,而对key做操作的时候修改了这个用于compare的属性,got it!Tricky!

后面的步骤只要变变即可以得出正确结果:
先getFirstEntry().getKey(),然后remove(key),然后对key做操作,然后再put进去,这样就能得出正确结果了。
分享到:
评论

相关推荐

    Map,HashMap,TreeMap的使用

    Java 中的 Map、HashMap、TreeMap 使用详解 Map 是 Java 集合框架中的一个接口,用于存储键值对,根据键可以获取值。Map 中的键不允许重复,但值可以重复。在 Java 中,HashMap、LinkedHashMap、TreeMap 都实现了 ...

    java用treemap统计单词出现的个数

    在本例中,我们使用TreeMap来统计一个句子或一个段落中单词出现的次数,并按照字母表顺序输出。 知识点1:Java TreeMap的使用 TreeMap是Java集合框架中的一种Map实现,它实现了SortedMap接口,能够根据键的自然...

    Treemap-4.1.2

    7. **并发性**:如果你需要在多线程环境中使用TreeMap,可能需要使用`ConcurrentSkipListMap`,这是一个线程安全的替代品。尽管TreeMap不是线程安全的,但可以在适当的同步控制下在多线程环境中使用。 8. **特性和...

    vue_echarts_treemap.zip

    在"vue_echarts_treemap.zip"中,我们可以看到开发者已经为 Vue 2.x 版本的 ECharts 提供了一个关于 TreeMap 的示例。这个示例可能包含了以下关键知识点: 1. **Vue 2.x 基础**:首先,你需要了解 Vue 2.x 的基本...

    C# Treemap Sunburst算法

    在某些场景下,TreeMap和Sunburst可以结合使用,比如在Treemap的某个节点上嵌入Sunburst,形成一种嵌套的可视化效果,这有助于更直观地展示多层次数据的细节。 在C#中,开发者需要自定义绘图逻辑或利用库的扩展性来...

    java treemap 学生信息

    在Java编程语言中,`TreeMap` 是一个有序的键值对集合,它实现了 `SortedMap` 接口。这个数据结构内部基于红黑树(Red-Black Tree)算法实现,保证了插入、删除和查找操作的时间复杂度为 O(log n)。在“java treemap...

    java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    ### Java中HashMap, LinkedHashMap, TreeMap,HashTable的区别 在Java编程语言中,`Map`接口是集合框架中的一个重要组成部分,用于存储键值对。本文将详细分析四种常用的`Map`实现类:`HashMap`, `LinkedHashMap`, ...

    TreeMap源码

    TreeMap是Java集合框架中的一种有序映射数据结构,它实现了SortedMap接口,提供了按自然顺序或自定义比较器顺序存储键值对的能力。在深入理解TreeMap的源码之前,我们首先要了解其背后的基石——红黑树。 红黑树...

    DataV-TreeMap示例

    在这个"TreeMapExample"压缩包中,可能包含了一个完整的DataV TreeMap的示例项目,用户可以下载后在本地运行,以便于理解和学习如何在实际项目中应用TreeMap。这个示例已经过IE8、Firefox和Chrome浏览器的兼容性测试...

    treeMap实现分组数据树形结构

    在Java编程中,TreeMap是一种基于红黑树(Red-Black Tree)算法实现的有序映射数据结构。它按照键的自然顺序或者自定义比较器的顺序来存储元素。在这个场景下,`TreeMap`被用来实现数据的分组,并构建一个树形结构,...

    java 中 TreeMap排序

    在Java编程语言中,`TreeMap`是一种基于红黑树数据结构实现的键值对容器,与`HashMap`不同,`TreeMap`自动按照键的自然顺序或者自定义的比较器进行排序。当我们需要存储的数据有特定的排序需求时,`TreeMap`便成为一...

    TreeMap按VALUE排序

    TreeMap按VALUE排序

    treemap treeset hashset hashmap 简要介绍

    在Java编程语言中,集合框架提供了多种数据结构来存储和操作数据,其中`TreeMap`、`TreeSet`、`HashSet`以及`HashMap`是最常用的数据结构之一。这些集合类各自有着独特的特性和应用场景,下面将对它们进行详细介绍。...

    Python TreeMap可视化方案数据源(实现代码,请看我博客专栏《机器学习》)

    这段代码会根据`tree_map_data`中的部门和分类数量生成一个TreeMap,每个矩形的面积代表对应的数量,颜色和大小的深浅则可以用来表示其他属性,如销售额或利润。 除了Matplotlib,还有其他的Python可视化库,比如...

    java集合-TreeMap的使用

    TreeMap是一种基于红黑树实现的有序映射(SortedMap)。它实现了NavigableMap接口,可以按照键的自然顺序或自定义排序规则对键值对进行排序和访问。

    java编写的命令行学生信息管理程序(用treemap)

    这个程序基于`Treemap`数据结构,这是一种在Java中由`java.util.TreeMap`类提供的有序映射,它允许以键值对的形式存储数据,并且能保持键的自然排序或者自定义排序。 `Treemap`的主要特点: 1. **有序性**:`...

    TreeMap in Java_java_treemap_

    Java中的`TreeMap`是一个基于红黑树(Red-Black Tree)数据结构的有序映射容器。它维护了键的自然顺序或者根据提供的比较器进行排序。`TreeMap`类继承自`AbstractMap`,实现了`NavigableMap`、`SortedMap`接口,因此...

    TreeMap的实现

    TreeMap自己的理解

    Python_TreeMap_可视化方案数据源(实现代码,请看我博客专栏《机器学习》)

    在这个案例中,我们将探讨如何使用Python中的`Matplotlib`库来实现TreeMap,同时利用提供的`products.csv`, `aisles.csv`, 和 `departments.csv`数据集。 `Matplotlib` 是Python中最基础且广泛使用的绘图库,它提供...

Global site tag (gtag.js) - Google Analytics