标签: treemap

Scala:为什么SortedMap的mapValues返回Map而不是SortedMap?

我是Scala的新手.我在我的代码中使用了SortedMap,我想使用mapValues创建一个新的地图,并对值进行一些转换.

mapValues函数返回一个新的Map,而不是返回一个新的SortedMap,然后我必须将其转换为SortedMap.

例如

val my_map = SortedMap(1 -> "one", 0 -> "zero", 2 -> "two")
val new_map = my_map.mapValues(name => name.toUpperCase)
// returns scala.collection.immutable.Map[Int,java.lang.String] = Map(0 -> ZERO, 1 -> ONE, 2 -> TWO)
val sorted_new_map = SortedMap(new_map.toArray:_ *)
Run Code Online (Sandbox Code Playgroud)

这看起来效率低下 - 最后一次转换可能会再次对键进行排序,或者至少验证它们是否已排序.

我可以使用普通的map函数,它既可以对键和值进行操作,也可以故意不改变转换函数中的键.这看起来太低效,因为执行地图可能假设转换可以(在的情况下,如:改变键的顺序my_map.map(tup => (-tup._1, tup._2)) -所以它可能"重新排序"他们.

有人熟悉MapSortedMap的内部实现,可以告诉我我的假设是否正确吗?编译器能否自动识别出密钥没有重新排序?是否有内部原因导致mapValues不应返回SortedMap?有没有更好的方法来转换地图的值而不会失去键的顺序?

谢谢

scala map treemap sortedmap

11
推荐指数
1
解决办法
1824
查看次数

TreeMap操作的时间复杂度--subMap,headMap,tailMap

有没有人知道TreeMap操作的时间复杂度 - 例如 - subMap,headMap.的tailMap.

像get,put这样的操作的时间复杂度是O(logn).但javadoc并没有说明上述操作的复杂性.

最糟糕的情况复杂性我可以想到O(n),因为如果集合包含最后一个元素,它将遍历整个列表.我们可以证实吗?

java list treemap

11
推荐指数
1
解决办法
7104
查看次数

我可以使用图像作为d3树图的背景矩形吗?

是否可以在d3中制作树图,每个矩形的背景是图像?我在寻找类似的什么在Silverlight做了这里,但D3.如果可能,是否有任何推荐的教程贯穿将背景连接到图像的过程?

treemap d3.js

11
推荐指数
2
解决办法
2万
查看次数

将标题属性添加到D3.js中的svg:g元素

我正在使用D3.js构建一个应用程序,它在树形图中显示数据.理想情况下,我想给树图提供一个工具提示,以在树图的每个节点上显示更多信息.树映射从.JSON文件提供数据.

我目前正在使用jquery插件Poshy Tip,我可以通过该title=属性传递此信息.我知道我需要以某种方式将title属性添加到树形图中的svg:g元素,但我无法弄清楚我在哪里设置每个节点的标题attr.

继承我脚本的开头,我做了所有声明等等......

<div id="chart"></div>
<script type="text/javascript">
var tree = d3.layout.tree()
.size([h, w - 160]);

var diagonal = d3.svg.diagonal()
.projection(function(d) { return [d.y, d.x]; });

var vis = d3.select("#chart").append("svg:svg")
.attr("width", w)
.attr("height", h)
.append("svg:g")
.attr("transform", "translate(40,0)");

d3.json("test.json", function(json) {
  json.x0 = 800;
  json.y0 = 0;
  update(root = json);
});
Run Code Online (Sandbox Code Playgroud)

这是我poshytip()在头脑中使用的方式

$(function(){
  $('node').poshytip({slide: false, followCursor: true, alignTo: 'cursor', 
    showTimeout: 0, hideTimeout: 0, alignX: 'center', alignY: 'inner-bottom',
    className: 'tip-twitter'});
}
Run Code Online (Sandbox Code Playgroud)

我只是希望能够"鼠标悬停"交互式树形图中的各个项目并获得弹出的工具提示..但我没有运气.如何设置每个项目具有特定的ID ..我是否在.JSON文件中执行此操作?有更简单的方法吗?我是以错误的方式解决这个问题吗?任何帮助都会很棒.

javascript jquery svg treemap d3.js

10
推荐指数
2
解决办法
3万
查看次数

什么是TreeMap中的"自然排序"?

可能重复:
如何在Java中对Map的键进行排序?

在类中TreeMap,Java API说:

基于红黑树的NavigableMap实现.地图根据其键的自然顺序进行排序,或者根据使用的构造函数在地图创建时提供的比较器进行排序.

自然排序是什么意思?用作键的类不必实现Comparable接口,但是将使用什么顺序?

java treemap

10
推荐指数
2
解决办法
1万
查看次数

为什么Java的TreeMap不允许初始大小?

加载1 000 000个数字需要2秒才能加载到树形图(二叉搜索树)中,但需要几毫秒才能加载到hashmap(在java中).
两者之间的唯一区别是我可以看到我可以设置一个hashmap的初始大小,因此它不需要经常重新调整大小.

假设TreeMap的数组的初始大小应该能够设置,我错了吗?它有这么慢的原因吗?
是否存在逻辑上的原因导致无法设置TreeMap或任何通用二叉搜索树的大小,或者这是错误的?

java treemap

10
推荐指数
2
解决办法
3983
查看次数

C++ 相当于 Java Map getOrDefault?

Java 的 getOrDefault 是一个很好的构造,可以单行访问映射值或起点(如果不存在)。我在 C++ 的地图参考中没有看到任何并行的内容。是否存在某些东西或者是您自己构建的?

我在地图中有对象,如果它们存在,我会更新它们,但如果它们不存在,我会构造新的。使用 getOrDefault,我可以在默认端构造对象,或者访问它(如果存在)。

http://www.cplusplus.com/reference/map/map/

https://www.geeksforgeeks.org/hashmap-getordefaultkey-defaultvalue-method-in-java-with-examples/

c++ treemap c++17

10
推荐指数
1
解决办法
9524
查看次数

比较器<String>必须覆盖超类方法

我正在制作TreeMap<String, String>并希望以降序的方式订购它.我创建了以下比较器:

Comparator<String> descender = new Comparator<String>() {

    @Override
    public int compare(String o1, String o2) {
        return o2.compareTo(o1);
    }
};
Run Code Online (Sandbox Code Playgroud)

我像这样构造TreeMap:

myMap = new TreeMap<String, String>(descender);

但是,我收到以下错误:

The method compare(String, String) of type new Comparator<String>(){} must override a superclass method
Run Code Online (Sandbox Code Playgroud)

我从未完全弄清楚仿制药,我做错了什么?

java generics map treemap comparator

9
推荐指数
2
解决办法
1万
查看次数

无法为TreeMap解析方法tailMap

为什么TreeMap类型Map没有定义方法tailMapheadMap.

Map<String, String> map = new TreeMap<>();
map.tailMap();  //cannot resolve method tailMap
Run Code Online (Sandbox Code Playgroud)

使用显式转换它可以工作:

((TreeMap<String, String>) map).tailMap("a");
Run Code Online (Sandbox Code Playgroud)

随着NavigableMap一切都很好:

NavigableMap<String, String> map1 = new TreeMap<>();
map1.tailMap("a");
Run Code Online (Sandbox Code Playgroud)

如果我是对的,因为界面Map缺少相应的方法,尽管面对对象map是类的具体实现TreeMap,当然确实拥有这样的方法.

只是寻找更详细的解释.

谢谢!

java dictionary interface treemap

9
推荐指数
1
解决办法
99
查看次数

TreeMap集合查看迭代器的时间复杂度?

HashMap(myHashMap.entrySet().iterator().next()myHashMap.keySet().iterator().next()myHashMap.values().iterator().next())的所有3个集合视图迭代器的时间复杂度在javadoc中有详细记录,所有这3个迭代器都是O(n + c)(n是映射数,c是容量,是物理数量)哈希表中的桶).

但是3个相应的TreeMap集合视图的3个迭代器呢?官方的javadoc没有说什么.它们的复杂性是什么?我确实看过SE8源代码,但我不能从那里判断.

java time-complexity treemap

9
推荐指数
1
解决办法
277
查看次数