浅谈indexOf() 与 binarySearch()

来源:互联网 发布:域名出售 编辑:程序博客网 时间:2024/05/19 20:45

我们知道在实际开发中,查找(索引)是非常常见的一种操作,能够进行索引,得到想要的结果的方式也很多,这里就谈谈对一个列表进行索引的两个常见的方法:indexOf()和binarySearch()。

indexOf 只能检索到第一个符合条件的值,返回值是下标,若没有符合,返回-1。内部的实现是通过遍历,一有符合条件的便返回。自然效率就比较低。

 

binarySearch()是Collections工具类提供的一个检索方法,使用二分搜索法搜索指定列表,功能与indexOf()相同。实现思路是将列表“折半再折半”直到找到符合条件的值,若没有符合,返回负值。在使用该方法前,有一个容易被忽略的前提就是该列表必须是有序的!!

从性能上讲,binarySearch()比indexOf ()效率要高得多。

 

小结:对列表进行索引时,建议使用indexOf(),简单,好用,不易出错。因为binarySearch()受限于被索引的列表必须是有序的,当对业务数据进行排序时,也就是改变了元素在列表中的位置,那就有可能埋下一个大bug。

如果是从性能方面考虑的话,binarySearch()是很好的选择。