我的问题很基本,但是我自己找不到解决方案。

我习惯于用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方法。

10-04 18:48