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