Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
相当于C++;Java中的map.lower_界限_Java_C++_Map_Treemap - Fatal编程技术网

相当于C++;Java中的map.lower_界限

相当于C++;Java中的map.lower_界限,java,c++,map,treemap,Java,C++,Map,Treemap,我的问题很基本,但我自己找不到答案 我习惯于在C++中编写算法。在那里,我经常使用std::map结构以及它提供的所有辅助方法 此方法将迭代器返回给映射的第一个元素,键>=返回给作为参数给定的键。例如: map<int, string> m; // m = { 4 => "foo", 6 => "bar", 10 => "abracadabra" } m.lower_bound(2); // returns iterator pointing to <4, "

我的问题很基本,但我自己找不到答案

我习惯于在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">
map-m;
//m={4=>“foo”,6=>“bar”,10=>“abracadabra”}
m、 下界(2);//返回指向的迭代器
m、 下界(4);//返回指向的迭代器
m、 下界(5);//返回指向的迭代器
很酷的是C++图是基于红黑树的,所以查询是对数的(<代码> O(log n)< /代码>)。 现在我需要用Java实现一个特定的算法。我需要与我刚才描述的功能类似的功能。我知道我可以使用在有序树中实现的
TreeMap
。然而,我似乎找不到与方法
下限
等效的方法。有这样的情况吗


非常感谢您的帮助。

我希望这对您有用吗

SortedMap tail = <Sorted Map Object>.tailMap(target);
if (!tail.isEmpty())
{
    upper = tail.firstKey();
}
SortedMap tail=.tailMap(目标);
如果(!tail.isEmpty())
{
upper=tail.firstKey();
}

我想你在找。看看ceilingKey/Entry方法。

这是一个显示行为的测试用例:

@Test
public void testPrefixMatch() {

    treeMap.put("1.2.3", "bar");
    treeMap.put("1.2.3.4", "bar");
    treeMap.put("1.2.3.5.6", "bar");


    assertEquals("1.2.3.5.6", treeMap.ceilingKey("1.2.3.4.5.6.7"));
    assertEquals("1.2.3.4", treeMap.floorKey("1.2.3.4.8.6"));
    assertEquals("1.2.3.5.6", treeMap.ceilingKey("1.2.3.4.8.6"));
}
有点类似:

在C中++

vector   lower_bound  return the index
在爪哇

TreeSet  higher       return the Key

谢谢,我应该仔细看一下,但我不知怎么地认为它应该是直接在
TreeMap
中声明的方法。我认为
ceilingEntry
方法与
std::lower\u bound
完全等效,虽然
lowerEntry
非常相似,但仍然不同。这似乎比@Nikola的建议更耗费资源,更难使用。事实证明,你是真正帮助我的人,因为我正在为android和上述方法(“lowerEntry”)开发在什么意义上你是说他的建议不正确?我想他的建议和你的完全一样。建议是使用天花板。FLUROKEY是使用权。我认为你对C++中的代码> > LoeLoWix/<代码>的理解是错误的。它实际上获取给定键的第一个键>=我明白了。你是对的,修改了答案。谢谢你的指点