Мой вопрос очень простой, но я не смог найти решение сам.
Я привык писать алгоритмы на C++. Там я очень часто использую структуру std::map
вместе со всеми вспомогательными методами, которые она предоставляет.
Этот метод возвращает итератор к первому элементу карты с ключом >= к ключу, указанному в качестве параметра. Пример:
map<int, string> m;
// m = { 4 => "foo", 6 => "bar", 10 => "abracadabra" }
m.lower_bound(2); // returns iterator pointing to <4, "foo">
m.lower_bound(4); // returns iterator pointing to <4, "foo">
m.lower_bound(5); // returns iterator pointing to <6, "bar">
Самое интересное, что карта C++ основана на красно-черных деревьях, поэтому запрос является логарифмическим ( O(log n)
).
Теперь мне нужно реализовать некий алгоритм на Java. Мне нужна аналогичная функциональность, как та, которую я только что описал. Я знаю, что могу использовать TreeMap
, который реализован в упорядоченном дереве. Однако я не могу найти аналог метода lower_bound
. Есть такое?
Большое спасибо за помощь.