Collections.binarySearch()与List indexOf()

时间:2011-04-14 17:54:19

标签: java algorithm list collections

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

3 个答案:

答案 0 :(得分:15)

如果您的收藏品已排序,binarySearch()将为O(log n),而不是indexOf()的O(n),您肯定会看到改进。

答案 1 :(得分:8)

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

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

答案 2 :(得分:3)

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