La mia domanda è molto semplice, ma non sono riuscito a trovare la soluzione da solo.Equivalente di C++ map.lower_bound in Java
Sono abituato a scrivere algoritmi in C++. Lì utilizzo molto spesso la struttura std::map
, insieme a tutti i metodi ausiliari che fornisce.
Questo metodo restituisce iteratore al primo elemento della mappa con chiave> = alla chiave fornita come parametro. Esempio:
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">
La cosa interessante è che la mappa C++ si basa su alberi rosso-nero e così la query è logaritmica (O(log n)
).
Ora ho bisogno di implementare un determinato algoritmo in Java. Ho bisogno di funzionalità simili a quella che ho appena descritto. So che posso usare TreeMap
che è implementato nell'albero ordinato. Tuttavia, non riesco a trovare l'equivalente del metodo lower_bound
. Esiste?
Grazie mille per il vostro aiuto.
Grazie avrei dovuto guardare più attentamente, ma in qualche modo ho pensato che dovrebbe essere un metodo dichiarato direttamente in 'TreeMap'. –
Penso che il metodo 'ceilingEntry' sia un equivalente esatto di' std :: lower_bound', mentre 'lowerEntry' è molto simile ma ancora diverso. – stgatilov
Penso che tu abbia ragione, modificherò la mia risposta. –