做社群的网站有哪些,网站开发小组,网站icp备案信息是什么意思,厦门小程序开发的公司大家好#xff0c;我是雄雄#xff0c;今天我们来看看java中的binarySearch方法#xff01;我们都知道#xff0c;如果我们想要在一个集合中查找某个元素所在的位置时#xff0c;可以使用list类自带的indexOf方法#xff0c;简单方便还快捷。不过#xff0c;Collections… 大家好我是雄雄今天我们来看看java中的binarySearch方法我们都知道如果我们想要在一个集合中查找某个元素所在的位置时可以使用list类自带的indexOf方法简单方便还快捷。不过Collections类也给我提供了个查找集合中元素的方法——binarySearch但是这个方法和indexOf方法无论从检索原理还是返回值上来说都有很大的差距01IndexOf方法我们先来看看indexOf是怎么检索集合内元素的示例代码如下public static void main(String[] args) {Listlists new ArrayList();lists.add(3);lists.add(6);lists.add(8);lists.add(7);lists.add(1);System.out.println(集合中的元素);for (Integer str : lists) {System.out.print(str );}int index lists.indexOf(2);System.out.println(\n2所在的位置是index);}其运行结果下面我们再来查找一下“8”所在的位置稍微改一下代码int index lists.indexOf(8);其运行结果如下两个案例说明不了问题我们再来一个比如查找一下“4” 这下很清楚,使用indexOf方法查找集合中的元素简单方便如果有返回该元素的下标下标从0开始如果没有则返回的是-1。02binarySearch方法binarySearch方法采用二分法的方式来对集合元素进行检索二分法搜索说的简单点就是“折半折半再折半”简单而且在效率方面要比idnexOf的方法要高出不少下面我们就来看看binarySearch方法是如何检索数据的。首先需要说明的是使用binarySearch方法检索二分法的前提是要对集合内数据进行排序否则返回的值是不准确的要是不排序怎么能知道值是在比中间值小的区域或者比中间值大的区域呢下面我们使用代码来看看public static void main(String[] args) {Listlists new ArrayList();lists.add(3);lists.add(6);lists.add(8);lists.add(7);lists.add(1);// 原来的集合System.out.println(原来的集合);for (Integer str : lists) {System.out.print(str );}// 对集合进行排序Collections.sort(lists);System.out.println(\n排序后的集合);for (Integer str : lists) {System.out.print(str );}// 使用binarySearch方法查找集合中的元素int i Collections.binarySearch(lists, 2);System.out.println(\n2所在的位置 i);}代码分析集合还是原来的集合只是我们将集合进行了简单的升序然后使用binarySearch方法查找集合中“2”所在的位置indexOf方法返回的是-1那binarySearch方法呢运行结果如下 居然是-2结果我们先保留着我们在继续举例如果查找“8”呢结果如下 结果是4那我们在继续查找“4”所在的位置其结果如下所示 好了到这里已经差不多可以总结了有同学可能会说“老师这没有规律的一些返回值怎么总结”别着急我们挨个来看01分析1查找“2”时显然集合中没有“2”所以必然找不到但是返回值-2又改怎么解释呢大家注意看2如果有的话应该在哪个位置是不是在3的位置排序后大于1小于3那3所在的位置和“-2”有何关联吗当你把整个集合的下标设成从1开始3所在的位置即2因为没有“2”这个元素所以返回值就是“-2”。02分析2查找“8”时集合中是存在的返回值是4大家把现在“8”的位置和返回值4进行关联总结一下是什么那就是当集合中存在该数时下标是从0开始的并且值是正数。03分析3带着分析1的结论我们来验证一下查找“4”。集合中是不存在4的那如果有的话“4”应该在6的位置那下标从1开始“6”所在的位置就是3又因为集合中没有所以是负数以上就是关于indexOf和binarySearch方法的总结是不是庆幸自己又学会了一点啦往期精彩新机必装那些你不知道的实用技软件在这里文末免费获取2020-10-31 自从有了这款辣椒酱拌饭再也不用老干妈2020-10-30 如何使用bootstrap实现轮播图2020-10-29 班级日常分享一天一瞬间2020-10-29 中流击水浪遏飞舟2020-10-28 王宝兴秋运会2020-10-27 高启航秋运会2020-10-26 点分享点点赞点在看