Collections.binarySearch()与List indexOf()
我有一个超过37K项的列表,我已经实现了hashCode()
, equals()
,所以我想我们想知道Collections.binarySearch()
可以帮助提高性能,并且比indexOf()
方法更快。
如果你的集合被排序, binarySearch()
将是O(log n)而不是indexOf()
的O(n),你肯定会看到一个改进。
为了使binarySearch()起作用,必须对列表进行排序。 equals()和hashCode()与排序无关。 您的对象需要是可比较的,或者您必须拥有相关的比较器。 无论哪种方式,您必须先对List进行排序。
是的,假设列表已排序,那么与indexOf()相比,您可能会从binarySearch()获得更好的性能。
使用HashSet可以获得更好的性能。 但这将占用更多空间。