首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双键TreeMap

双键TreeMap
EN

Stack Overflow用户
提问于 2014-07-05 00:32:13
回答 2查看 1.2K关注 0票数 1

我正在制作一个简单的2Djavasidescroller,现在,我有一个HashMap,其中我有一个类Location作为键,Entity作为值。我希望能够将Entity对象存储在TreeMap (或类似的东西)中,其中有两个键:double xdouble y。并且能够得到所有的值,其中第一个键在特定的数字之间,第二个键也是。到目前为止,我只找到了TreeMap,但它只允许我将1倍作为密钥。在Java中是否有一种方法可以实现这一点,而不需要遍历每个键(如Location)并检查其中的两个数字是否在指定的范围内?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-05 01:03:22

虽然这不是很好,但有一种方法是使用TreeMap<Double, TreeMap<Double, Entity>>。然后,要获取一个正方形中的所有实体,可以执行map.subMap(minX, maxX).subMap(minY, maxY).values();

票数 2
EN

Stack Overflow用户

发布于 2014-07-05 02:24:28

我将使用2个TreeMaps,一个用于x,另一个用于y:

代码语言:javascript
复制
    NavigableMap<Double, Object> x = new TreeMap<>();
    NavigableMap<Double, Object> y = new TreeMap<>();

    Object obj1 = new Object();
    x.put(2.0, obj1);
    y.put(10.0, obj1);

    // find objects with x between 1 and 3; y between 9 and 11 

    Collection<Object> c1 = x.subMap(1.0, true, 3.0, true).values();
    Collection<Object> c2 = y.subMap(9.0, true, 11.0, true).values();
    c1.retainAll(c2);

现在c1包含结果

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24581948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档