标签: treemap

Winforms中的可视树形图

在C#2.0 WinForms中是否有用于构建方形树图的框架?

与此类似的东西:

(来自http://www.codeproject.com/KB/recipes/treemaps.aspx)

c# data-visualization treemap winforms

8
推荐指数
1
解决办法
5123
查看次数

使用IgnoreCase按键对Map <String,Object>进行排序?

好吧,我测试了TreeMap,但它没有考虑字符串比较中的IgnoreCase.我需要按字典顺序排序并忽略大小写.还有其他方法吗?

谢谢,这是有效的(TreeMap(Comparator c)).但是,我有另一个问题:

public final Comparator<Object> STR_IGN_CASE_COMP = new Comparator<Object>() {

    public int compare(Object h1, Object h2) {
            String s1 = h1.getId();
            String s2 = h2.getId();
            return s1.compareToIgnoreCase(s2);
    }
}; //STR_IGN_CASE_COMP
Run Code Online (Sandbox Code Playgroud)

如何将比较器广泛化以适应不同的对象?假设所有人都有getId()方法.

谢谢,马丁

java sorting collections string-comparison treemap

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

Java TreeMap(比较器)和get方法忽略了比较器

public final Comparator<String> ID_IGN_CASE_COMP = new Comparator<String>() {

        public int compare(String s1, String s2) {
            return s1.compareToIgnoreCase(s2);
        }
    };

private Map< String, Animal > _animals = new TreeMap< String, Animal >(ID_IGN_CASE_COMP);
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何使用方法get(id)忽略给定的比较器.我希望地图按Case Insensitive排序,但是,当我通过给定键获取值时,我希望它区分大小写.

java treemap comparator

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

Java中C++ map.lower_bound的等价物

我的问题非常基本,但我自己找不到解决方案.

我习惯用C++编写算法.在那里,我经常使用该std::map结构以及它提供的所有辅助方法.

此方法将迭代器返回到地图的第一个元素,其中键> =到作为参数给出的键.例:

map<int, string> m;
// m = { 4 => "foo", 6 => "bar", 10 => "abracadabra" }
m.lower_bound(2); // returns iterator pointing to <4, "foo">
m.lower_bound(4); // returns iterator pointing to <4, "foo">
m.lower_bound(5); // returns iterator pointing to <6, "bar">
Run Code Online (Sandbox Code Playgroud)

很酷的是,C++地图基于红黑树,因此查询是对数(O(log n)).

现在我需要在Java中实现某种算法.我需要与我刚才描述的功能类似的功能.我知道我可以使用TreeMap在有序树中实现的.但是我似乎没有找到相应的方法lower_bound.有这样的吗?

非常感谢您的帮助.

c++ java map treemap

8
推荐指数
1
解决办法
3191
查看次数

在javascript中实现一个方形树形图

我目前正在尝试在Javascript中实现树图算法.更具体地说,在Squarified Treemaps中描述的算法.给出的伪代码如下所示:

procedure squarify(list of real children, list of real row, real w)
begin
    real c = head(children);
    if worst(row, w) <= worst(row++[c], w) then
        squarify(tail(children),row++[c], w)
    else
        layoutrow(row);
        squarify(children,[], width());
    fi
end
Run Code Online (Sandbox Code Playgroud)

但我的JavaScript看起来像:

var c = children[0];
if (worst(row, w) >= worst(row.concat(c), w)) {
    this.squarify(children.splice(1), row.concat(c), w);
} else {
    layoutrow(row);
    this.squarify(children, [], width());
}
Run Code Online (Sandbox Code Playgroud)

据我所知,我的代码工作正常,但不平等是错误的方法.我假设我在实现中忽略了某些东西,或者伪代码中的不等式是不正确的?谢谢

javascript algorithm pseudocode treemap

8
推荐指数
1
解决办法
7981
查看次数

TreeSet内部使用TreeMap,因此在使用Treeset时是否需要实现Hashcode方法?

我想知道这是什么意思时的javadocTreeSet

这个类实现了由TreeMap实例支持的Set接口?

在下面的示例中,我还没有实现该Hashcode方法,但仍按预期工作,即它能够对对象进行排序.请注意,我故意没有实现一致的Equals实现来检查TreeSet行为.

import java.util.TreeSet;


public class ComparisonLogic implements Comparable<ComparisonLogic>{

String field1;
String field2;

public String toString(){
    return field1+" "+field2;
}

ComparisonLogic(String field1,String field2){
    this.field1= field1;
    this.field2= field2;

}
public boolean equal(Object arg0){
    ComparisonLogic obj = (ComparisonLogic) arg0; 

    if(this.field1.equals(obj.field1))
        return true;
    else
        return false;
}

public int compareTo(ComparisonLogic arg0){
    ComparisonLogic obj = (ComparisonLogic) arg0;   
    return this.field2.compareToIgnoreCase(obj.field2);
}

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO …
Run Code Online (Sandbox Code Playgroud)

java collections hashcode treemap treeset

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

将SVG文本剪辑为D3树形图中的矩形宽度

我想知道是否有一种更简单的方法来限制文本标签的宽度而不是使用剪辑路径.

以下是我正在寻找的标签示例:treemap:

在此输入图像描述

请注意,标签会被包含切片的边界截断.

该特定示例使用<div>标记实现,默认情况下具有此行为.但是我正在使用SVG <rect>,我希望有一种更直接的方法,而不是一个定义另一个矩形的单独剪辑路径.

javascript svg label treemap d3.js

8
推荐指数
1
解决办法
2519
查看次数

允许重复的TreeSet或TreeMap

我需要一个Collection对元素进行排序,但不会删除重复项.

我已经去了TreeSet,因为TreeSet实际上将值添加到支持TreeMap:

public boolean add(E e) {
    return m.put(e, PRESENT)==null;
}
Run Code Online (Sandbox Code Playgroud)

TreeMap使用Comparators compare逻辑删除重复项

我写了一个Comparator在相同元素的情况下返回1而不是0.因此,在相同元素的情况下,TreeSet使用它Comparator不会覆盖副本,只会对其进行排序.

我已经测试了它的简单String对象,但我需要一组自定义对象.

public static void main(String[] args)
{       
        List<String> strList = Arrays.asList( new String[]{"d","b","c","z","s","b","d","a"} );      
        Set<String> strSet = new TreeSet<String>(new StringComparator());       
        strSet.addAll(strList);     
        System.out.println(strSet); 
}

class StringComparator implements Comparator<String>
{
    @Override
    public int compare(String s1, String s2)
    {
        if(s1.compareTo(s2) == 0){
            return 1;
        }
        else{
            return s1.compareTo(s2);
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

java collections treemap treeset

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

为什么我的TreeMap没有排序?

我使用了TreeMap键是a的位置String,值是类型Integer.当我输出Map对象时,它不按排序顺序打印.

这是我使用的代码:

TreeMap<String, Integer> m = new TreeMap<String, Integer>();
m.put("Hello", 1);
m.put("world", 2);
m.put("Zertt", 5);
m.put("Hello", 1);
m.put("world", 2);
System.out.println("map : " + m);
Run Code Online (Sandbox Code Playgroud)

我希望输出像这样排序:

map:{Hello = 1,world = 2,Zertt = 5}

但相反,我得到了这个:

map:{Hello = 1,Zertt = 5,world = 2}

java treemap

8
推荐指数
1
解决办法
3122
查看次数

D3 v4中的Zoomable树形图

我试图根据以下示例在D3 v4中为我的树形图添加缩放行为:12.它是用HTML元素而不是SVG构建的,我通过使用百分比而不是像素单位使其响应.

它到目前为止工作得很好但现在我想通过点击放大到单个细胞,直到到达最后一个孩子.然后点击将返回到树的根.

到目前为止,这是我的代码:http://codepen.io/znak/pen/qapRkQ

我正在努力使用在V4中工作的缩放功能,它遍布整个地方:

function zoom(d) {

    console.log('clicked: ' + d.data.name);

    x.domain([d.x0, d.x1]);
    y.domain([d.y0, d.y1]);

    var t = d3.transition()
        .duration(800)
        .ease(d3.easeCubicOut);

    chart
        .merge(cell)
        .transition(t)
        .style("left", function(d) { return x(d.x0) + "%"; })
        .style("top", function(d) { return y(d.y0) + "%"; })
        .style("width", function(d) { return x(d.x1 - d.x0) + "%"; })
        .style("height", function(d) { return y(d.y1 - d.y0) + "%"; });

    node = d; //?
    d3.event.stopPropagation(); //?
}
Run Code Online (Sandbox Code Playgroud)

如何使用D3 v4更新和转换元素?

谢谢你的任何提示!

javascript treemap d3.js

8
推荐指数
1
解决办法
2203
查看次数