标签: treemap

这个问题的最佳数据结构?

我正在为这个程序使用Java,我目前有一种情况,我希望将键/值对添加到具有整数键的表中,例如

add (1, "Bobby")
add (6, "Sue")
add (3, "Mary")
add (8, "John")
add (15, "Joe")
Run Code Online (Sandbox Code Playgroud)

所以很自然地我想做一个类似哈希表的东西,但是当我进行查找时,如果找不到确切的值,我希望它返回最大的密钥,该密钥不大于请求的密钥.

所以例如,如果我查找7,它应该返回"Sue",但是如果我查找9,它应该返回"John"

我希望使用其中一个java util类(HashTable,TreeMap等),但我不太清楚如何做到这一点.

java lookup hashtable treemap comparator

3
推荐指数
1
解决办法
392
查看次数

d3.js树形图 - 有没有办法指定显示首选项(排序)?

我正在开发一个基于d3.js的Treemap,http://mbostock.github.com/d3/ex/treemap.html ,我是D3的新手.基本上我有一个JSON文件的值列表,我正在创建一个基本的单父树形图,它在一个框中显示键,大小取决于键的值.

我遇到的问题是我想要解决的问题是我的数据往往偏向正确的高端,所以所有的大盒子都在那里结束,所有的小盒子最终都在左边.在我的脑海里(以及设计师的思想),既然我们从左到右阅读,那么在左边放置较大的盒子,在右边放置较小的盒子会更有意义.显然,我们的尺寸不需要改变,只需要改变它们的顺序.有关数据当前的显示方式,请参见http://chrislcoray.com/browsertest/treemap_issue.jpg.

例如,假设我的密钥是博客页面中的标签.我的JSON(不要问为什么我在博客中使用JSON,这是一个例子)可能看起来像这样:

{
    "name": "tags",
    "children": [
        {"name":"cooking", "size": 35},
        {"name":"video games", "size": 31},
        {"name":"book club", "size": 26},
        {"name":"knitting", "size": 23},
        {"name":"hunting", "size": 22},
        {"name":"farming", "size": 19},
        {"name":"athletics", "size": 6},
        {"name":"toys", "size": 3},
        {"name":"sanitizer", "size": 3},
        {"name":"pigs", "size": 2},
        {"name":"ducks", "size": 2},
        {"name":"wildlife", "size": 2},
        {"name":"automobiles", "size": 1},
        {"name":"waterbottles", "size": 1},
        {"name":"telephone cords", "size": 1},
        {"name":"lampshade hats", "size": 1}
    ]
}
Run Code Online (Sandbox Code Playgroud)

我的D3看起来像这样:

var jsonFeed = '/JSON/tags.json';

var width = jQuery('#container').width(),
    height = jQuery('#container').height();

var …
Run Code Online (Sandbox Code Playgroud)

jquery treemap d3.js

3
推荐指数
1
解决办法
3930
查看次数

Java按字符串前缀排序映射<String,String>

在Java中.如何使用带有数字前缀的给定字符串对地图进行排序.我从属性文件中获取地图:

1_aaa=bla1
2_bbb=bla2
3_ccc=bla3
4_ddd=bla4 
...
10_jjj=bla10
11_kkk=bla11
12_lll=bla12
Run Code Online (Sandbox Code Playgroud)

我从文件加载属性:

FileInputStream is =new FileInputStream(new File(filePath));
Properties prop = new Properties();
prop.load(is);
Run Code Online (Sandbox Code Playgroud)

之后: SortedMap<Object, Object> sortedProperties new TreeMap<Object, Object>(prop);

现在使用TreeMap时 - >'10_jjj'是SortedMap中的第一个元素,我希望'1_aaa'成为第一个元素.

有任何想法吗?

谢谢

java sorting list map treemap

3
推荐指数
1
解决办法
454
查看次数

Java在TreeMap上迭代 - 不兼容的类型

我有以下集合:

private Map <String, Staff> staff;
Run Code Online (Sandbox Code Playgroud)

实现为TreeMap:

staff = new TreeMap <String, Staff> ();
Run Code Online (Sandbox Code Playgroud)

我需要迭代这个映射中的值,但是当我尝试下面的代码时,我得到了一个不兼容的类型编译错误.我不明白为什么会这样; 我的地图中的值是Staff对象和

it.HasNext() 
Run Code Online (Sandbox Code Playgroud)

应该将它们返回存储在staffMember变量中,这应该对我的知识很好?非常感谢.

Collection <Staff> staffList = staff.values(); 
         Iterator it = staffList.iterator ();
         while ((isJobAssigned = false) ||it.hasNext())
         {
             Staff staffMember = it.next(); 
             if ((staffMember instanceof Typist) && (jobType.equalsIgnoreCase("Typist")))
             {
                 newJob.setJobState ("Assigned");
                 staffMember.setState("Working");
                 return newJon.getJobNo() + " Staff allocated: " + staffMember.getName () + ", ID: " + staffMember.getId();
                }
Run Code Online (Sandbox Code Playgroud)

java iteration iterator treemap

3
推荐指数
1
解决办法
211
查看次数

树图排序

我有这段代码:

private final static TreeMap<String, UserNotification> USER_NOTIFICATION_MAP = new TreeMap<String, UserNotification>();

//Filling the map using services

String idString = "1";
Iterator it = USER_NOTIFICATION_MAP.entrySet().iterator();
while (it.hasNext()) 
{
    Map.Entry pairs = (Map.Entry)it.next();
    idString = pairs.getKey().toString();   
    System.out.println(idString);
}   
Run Code Online (Sandbox Code Playgroud)

对于具有以下对的地图:2 - UserNotification,3 - UserNotification,4 - UserNotification,5 - UserNotification,6 - UserNotification,7 - UserNotification,8 - UserNotification,9 - UserNotification,10 - UserNotification

代码输出为:10 2 3 4 5 6 7 8 9

考虑到TreeMap按键对所有数据进行排序,这怎么可能呢?我想值10的键应该在列表的末尾.

java treemap

3
推荐指数
1
解决办法
412
查看次数

将树形图转换为 ggplot

好消息:我可以使用树状图包创建一个漂亮的树状图。

数据:

forTm <- structure(list(
  UnitGroup = c("1N", "BHU", "CSU", "ED", "Med/Surg", "Med/Surg", "Telemetry", 
            "Telemetry", "Telemetry", "Telemetry", "Telemetry"), 
  Unit = c("A", "B", "C", "ED", "D", "E", "F", "G", "H", "I", "J"),
  Count = c(1L, 1L, 1L, 1L, 15L, 10L, 5L, 2L, 3L, 8L, 4L)), 
  class = c("data.frame"), 
  row.names = c(NA, -11L),
  .Names = c("UnitGroup", "Unit", "Count"))
Run Code Online (Sandbox Code Playgroud)

树形图:

library(treemap)
tm <- treemap(forTm,
          index = c("UnitGroup", "Unit"),
          vSize = "Count",
          vColor = "Count",
          type = "dens",
          palette = "YlGnBu",
          title = "# …
Run Code Online (Sandbox Code Playgroud)

r treemap ggplot2

3
推荐指数
1
解决办法
2391
查看次数

有没有办法在Google Charts的TreeMap中显示子标签

我正在尝试使用Google Charts创建一个TreeMap,它不仅显示父标签以及孩子的颜色分类,还显示孩子的标签.我基本上想要这个(保存可能的孩子着色):在此输入图像描述

我没有找到任何在线示例或问题,这可能吗?

javascript google-visualization treemap

3
推荐指数
1
解决办法
339
查看次数

如何返回TreeMap中包含的值的TreeSet?

我试图得到一个TreeMap中键的所有值的集合,大于某个值,键.

代码尝试如下:

TreeSet<E> set = (TreeSet<E>)tMap.tailMap(key, false).values();
Run Code Online (Sandbox Code Playgroud)

有没有办法在Java中这样做?

谢谢!!

java tree treemap treeset data-structures

3
推荐指数
1
解决办法
158
查看次数

Bisect/Insort 的列表和双端队列的时间复杂度是否不同?

据我所知,listPython中是使用数组实现的,而deque使用双链表实现的。无论哪种情况,某个值的二分查找都需要 O(logn) 时间,但如果我们插入到该位置,数组需要 O(n),而双链表则需要 O(1)。

bisect那么,我们是否可以使用、 、insort和的组合deque来实现所有动态集合操作,并且时间复杂度可与 Java 中的 TreeMap 相媲美呢?


更新:我在这个Leetcode问题中测试了它:https ://leetcode.com/problems/time-based-key-value-store/submissions/

出乎我的意料,当我从 切换list到时deque,速度慢了很多。

python algorithm binary-search treemap python-3.x

3
推荐指数
1
解决办法
1767
查看次数

Java TreeMap put vs HashMap put,自定义对象作为键

我的目标是使用 TreeMap 使 Box 键对象按 Box.volume 属性排序,同时能够放置由 Box.code 不同的键。在 TreeMap 中不可能吗?

根据下面的测试 1,HashMap put 按预期工作,HashMap 保留了 A、B 键对象,但在测试 2 中,TreeMap put 不将 D 视为不同的键,它替换了 C 的值,请注意我使用了 TreeMap 比较器作为 Box.volume,因为我希望键在 TreeMap 中按体积排序

import java.util.*;

public class MapExample {
    public static void main(String[] args) {
        //test 1
        Box b1 = new Box("A");
        Box b2 = new Box("B");
        Map<Box, String> hashMap = new HashMap<>();
        hashMap.put(b1, "test1");
        hashMap.put(b2, "test2");
        hashMap.entrySet().stream().forEach(o-> System.out.println(o.getKey().code+":"+o.getValue()));
        //output
        A:test1
        B:test2

        //test 2
        Box b3 = new …
Run Code Online (Sandbox Code Playgroud)

java hashmap treemap

3
推荐指数
1
解决办法
121
查看次数