Collections.binarySearch()与List indexOf()

我有一个超过37K项的列表,我已经实现了hashCode()equals() ,所以我想我们想知道Collections.binarySearch()可以帮助提高性能,并且比indexOf()方法更快。

如果你的集合被排序, binarySearch()将是O(log n)而不是indexOf()的O(n),你肯定会看到一个改进。

为了使binarySearch()起作用,必须对列表进行排序。 equals()和hashCode()与排序无关。 您的对象需要是可比较的,或者您必须拥有相关的比较器。 无论哪种方式,您必须先对List进行排序。

是的,假设列表已排序,那么与indexOf()相比,您可能会从binarySearch()获得更好的性能。

使用HashSet可以获得更好的性能。 但这将占用更多空间。