TreeMap с двумя ключами

1

Я делаю простой двумерный Java-прокруткой, и прямо сейчас у меня есть HashMap где у меня есть класс Location в качестве ключа, а Entity как значение. Я хочу иметь возможность хранить объекты Entity в TreeMap (или что-то подобное), где у меня будет два ключа: double x и double y. и иметь возможность получать все значения, где первый ключ находится между конкретными числами и вторым ключом. До сих пор я только нашел TreeMap, но это только позволяет мне иметь 1 двойной ключ. Есть ли способ в Java реализовать это без необходимости прокручивать каждый ключ (сосать как Location) и проверять, находятся ли 2 числа в нем в указанных границах?

Теги:
treemap
hashmap
multiple-columns

2 ответа

2
Лучший ответ

Хотя это не очень - один из способов сделать это - с TreeMap<Double, TreeMap<Double, Entity>>. Затем, чтобы получить все объекты в квадрате, вы можете сделать map.subMap(minX, maxX).subMap(minY, maxY).values();

2

Я бы использовал 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 содержит результат

Ещё вопросы

Сообщество Overcoder
Наверх
Меню