我的问题很基本,但是我自己找不到解决方案。
我习惯于用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
。有这样的吗?非常感谢您的帮助。
最佳答案
我猜您在寻找TreeMap。看一看ceilingKey/Entry方法。