Collections.binarySearch () против списка indexOf () - PullRequest
7 голосов
/ 14 апреля 2011

У меня есть список из более чем 37K элементов, и я уже реализовал hashCode(), equals(), поэтому мне интересно, Collections.binarySearch() может помочь повысить производительность и быстрее, чем метод indexOf().

Ответы [ 3 ]

15 голосов
/ 14 апреля 2011

Если ваша коллекция отсортирована, binarySearch() будет O (log n), а не indexOf() O (n), и вы обязательно увидите улучшение.

8 голосов
/ 14 апреля 2011

для того, чтобы binSearch () работал, ваш список должен быть отсортирован.equals () и hashCode () не имеют ничего общего с сортировкой.Ваши объекты должны быть сопоставимыми, или у вас должен быть соответствующий компаратор.в любом случае, вы должны сначала отсортировать список.

и да, при условии, что список отсортирован, тогда вы, вероятно, получите лучшую производительность от binarySearch () по сравнению с indexOf ().

3 голосов
/ 14 апреля 2011

Вы получите еще лучшую производительность, используя HashSet. Это займет больше места, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...