我正在制作一个简单的2Djavasidescroller,现在,我有一个HashMap,其中我有一个类Location作为键,Entity作为值。我希望能够将Entity对象存储在TreeMap (或类似的东西)中,其中有两个键:double x和double y。并且能够得到所有的值,其中第一个键在特定的数字之间,第二个键也是。到目前为止,我只找到了TreeMap,但它只允许我将1倍作为密钥。在Java中是否有一种方法可以实现这一点,而不需要遍历每个键(如Location)并检查其中的两个数字是否在指定的范围内?
发布于 2014-07-05 01:03:22
虽然这不是很好,但有一种方法是使用TreeMap<Double, TreeMap<Double, Entity>>。然后,要获取一个正方形中的所有实体,可以执行map.subMap(minX, maxX).subMap(minY, maxY).values();
发布于 2014-07-05 02:24:28
我将使用2个TreeMaps,一个用于x,另一个用于y:
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包含结果
https://stackoverflow.com/questions/24581948
复制相似问题