Tag: treemap

基于Red-Black树的JAVA中TreeMap实现的解释

我在JAVA中浏览了TreeMap的源代码。 根据JAVA doc: 基于红黑树的NavigableMap实现。 地图根据其键的自然顺序进行排序,或者通过在地图创建时提供的比较器进行排序,具体取决于使用的构造函数。 此实现为containsKey,get,put和remove操作提供了有保证的log(n)时间成本。 算法是对Cormen,Leiserson和Rivest的算法导论中的算法的改编。 在源代码中,我发现内部类条目被用作节点 。 static final class Entry implements Map.Entry { K key; V value; Entry left = null; Entry right = null; Entry parent; boolean color = BLACK; …. 至于红黑树的定义 。 从维基百科我发现: 红黑树是一种自平衡二叉搜索树,是计算机科学中使用的数据结构。 通过用两种颜色中的一种(这些通常称为“红色”和“黑色”,因此树的名称)绘制每个节点来提供自平衡,使得得到的绘制树满足某些属性。 t让它变得非常不平衡。 修改树时,随后重新排列新树并重新绘制以恢复着色属性。 这些属性的设计使得可以有效地执行这种重新排列和重新着色。 我试图分析源代码,但无法理解以下内容: 假设我已经在树中有两个键“C”和“E”,然后我添加“D”。 如何安排节点(使用自然排序)。 如何在Java源代码中实现Tree的自我平衡。 我尝试搜索TreeMap的详细实现,但无法找到任何文章,例如我为HashMap找到的以下文章 从昨天起我就挂在这棵树上:(有人可以帮我下楼……

迭代时如何删除和添加元素到TreeMap?

我想写这样的代码 – for (Map.Entry e : map.entrySet()){ map.remove(k); map.put(x, value); } 但是我得到了java.util.ConcurrentModificationException我也试过使用Iterator但是我得到了相同的Exception

使用TreeMap时Java“无法转换为Comparable”

可能重复: Java:SortedMap,TreeMap,Comparable? 如何使用? 我正在使用Java JungI图形包和Netbeans 7.我从Java得到以下错误: Exception in thread “main” java.lang.ClassCastException: graphvisualization.MyVertex cannot be cast to java.lang.Comparable at java.util.TreeMap.put(TreeMap.java:542) 以下是与错误相关的代码: SortedMap vMap = new TreeMap(); double curRank = 0; for(MyVertex v: g.getVertices()) //g is a SparseGraph { curRank = vertexRank.getVertexScore(v); vMap.put(v, curRank); //**Here is my Error** } MyVertex类是我为图表制作的一个类。 以下是MyVertex的代码 public class MyVertex { int vID; […]

Java将Hashmap放入Treemap

我正在阅读文本文件中的200万行 ,如上一个问题中提到的Java最快的方式来阅读200万行的文本文件 现在我将这些信息存储到HashMap中,我想通过TreeMap对它进行排序,因为我想使用ceilingkey。 以下方法是否正确? private HashMap hMap = new HashMap(); private TreeMap tMap = new TreeMap(hMap);

如何使用预先排序的数据初始化TreeMap?

我的应用程序使用TreeMap来保持数据排序并具有log(n)查找和插入。 这在应用程序运行时的一般情况下效果很好,但是当应用程序首次启动时,我需要初始化TreeMap,其中有几百万个长整数,我按排序顺序 (升序)。 由于这些初始化值已经排序,有没有办法将它们插入TreeMap而不支付树插入和重新平衡的log(n)成本?

Java:SortedMap,TreeMap,Comparable? 如何使用?

我有一个对象列表,我需要根据其中一个字段的属性进行排序。 我听说SortedMap和Comparators是最好的方法。 我是否正在对我正在排序的类实现Comparable,还是创建一个新类? 如何实例化SortedMap并传入Comparator? 排序如何工作? 它会在插入新对象时自动对所有内容进行排序吗? 编辑:此代码给我一个错误: private TreeMap collection = new TreeMap(); (Ktr实现Comparator )。 Eclipse说它期待类似TreeMap ,所以我提供的参数数量不正确。

从Java中的Map中选择随机键和值集

我想从Map获取随机密钥及其各自的值。 这个想法是随机生成器会选择一个键并显示该值。 棘手的部分是键和值都是字符串,例如myMap.put(“Geddy”, “Lee”) 。