Trích dẫn từ docs nó nói rằng java.util.Collections.binarySearch(List<? extends Comparable<? super T>> list, T key)
lợi nhuận ...Lý do đằng sau giá trị trả về java.util.Collections.binarySearch là gì khi khóa không tìm thấy?
chỉ số của khóa tìm kiếm, nếu nó được chứa trong danh sách; nếu không, (- (điểm chèn) - 1). Điểm chèn được định nghĩa là điểm mà tại đó khóa sẽ được chèn vào danh sách: chỉ mục của phần tử đầu tiên lớn hơn khóa hoặc list.size() nếu tất cả các phần tử trong danh sách đều nhỏ hơn khóa được chỉ định ...
Câu hỏi của tôi là, ý nghĩa (nếu có) có phải định lý (-(insertion point) - 1)
có phải là giá trị trả về khi không tìm thấy khóa không? Tại sao không chỉ trả lại insertion point
chẳng hạn?
Sau đó, bạn sẽ phân biệt giữa tìm thấy và không được tìm thấy như thế nào? –
@OliverCharlesworth: Bằng cách so sánh 'khóa' với giá trị tại chỉ mục đó.Nếu so sánh đó tiêu thụ một tỷ lệ đáng kể thời gian chạy, tôi có thể thấy cách bạn muốn giảm thiểu chúng và nếu danh sách không phải là truy cập ngẫu nhiên, tôi có thể thấy cách bạn muốn tránh truyền tải, nhưng mã hóa thông tin này trong dấu hiệu là một mớ hỗn độn. Java quá xấu không có bất kỳ hỗ trợ nào cho nhiều giá trị trả lại. – user2357112