Câu hỏi của tôi rất cơ bản, nhưng tôi không thể tự tìm ra giải pháp.Tương đương với C++ map.lower_bound trong Java
Tôi đã quen với việc viết các thuật toán trong C++. Ở đó tôi thường sử dụng cấu trúc std::map
, cùng với tất cả các phương thức phụ trợ mà nó cung cấp.
Phương thức này trả về trình vòng lặp cho phần tử đầu tiên của bản đồ bằng khóa> = đến khóa được cho làm tham số. Ví dụ:
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">
Điều thú vị là bản đồ C++ dựa trên cây đỏ đen và do đó truy vấn là logarit (O(log n)
).
Bây giờ tôi cần triển khai một thuật toán nhất định trong Java. Tôi cần chức năng tương tự như chức năng tôi vừa mô tả. Tôi biết tôi có thể sử dụng TreeMap
được triển khai trong cây có thứ tự. Tuy nhiên tôi dường như không tìm thấy tương đương với phương thức lower_bound
. Có cái đó không?
Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn.
Cảm ơn tôi đã xem xét cẩn thận hơn, nhưng tôi bằng cách nào đó nghĩ rằng nó phải là một phương pháp được khai báo trực tiếp trong 'TreeMap'. –
Tôi nghĩ phương thức 'ceilingEntry' tương đương chính xác' std :: lower_bound', trong khi 'lowerEntry' rất giống nhưng vẫn khác. – stgatilov
Tôi nghĩ bạn nói đúng, tôi sẽ chỉnh sửa câu trả lời của tôi. –