【问题标题】:TreeMap with two keys具有两个键的 TreeMap
【发布时间】:2014-07-05 00:32:13
【问题描述】:

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

【问题讨论】:

    标签: java hashmap multiple-columns treemap


    【解决方案1】:

    虽然它并不漂亮 - 一种方法是使用 TreeMap<Double, TreeMap<Double, Entity>>。然后要获取正方形内的所有实体,您可以执行map.subMap(minX, maxX).subMap(minY, maxY).values();

    【讨论】:

      【解决方案2】:

      我会使用 2 个 TreeMap,一个用于 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 包含结果

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-30
        • 1970-01-01
        • 1970-01-01
        • 2016-03-17
        • 2014-11-16
        • 2013-03-20
        • 1970-01-01
        • 2013-12-26
        相关资源
        最近更新 更多