Mi pregunta es muy básica, pero no pude encontrar la solución yo mismo.Equivalente de C++ map.lower_bound en Java
Estoy acostumbrado a escribir algoritmos en C++. A menudo utilizo la estructura std::map
, junto con todos los métodos auxiliares que proporciona.
Este método devuelve el iterador al primer elemento del mapa con la tecla> = en la clave dada como parámetro. Ejemplo:
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">
Lo interesante es que el mapa C++ se basa en árboles rojo-negro y así la consulta es logarítmica (O(log n)
).
Ahora tengo que implementar un cierto algoritmo en Java. Necesito una funcionalidad similar a la que acabo de describir. Sé que puedo usar TreeMap
que se implementa en el árbol ordenado. Sin embargo, no parece encontrar el equivalente del método lower_bound
. ¿Hay tal?
Muchas gracias por su ayuda.
Gracias debería haber mirado con más cuidado, pero de alguna manera pensé que debería ser un método declarado directamente en 'TreeMap'. –
Creo que el método 'ceilingEntry' es un equivalente exacto de' std :: lower_bound', mientras que 'lowEntry' es muy similar pero aún diferente. – stgatilov
Creo que tienes razón, voy a editar mi respuesta. –