当前位置: 首页 > news >正文

指定网站建设前期规划方案阜蒙县建设镇官方网站

指定网站建设前期规划方案,阜蒙县建设镇官方网站,我找伟宏篷布我做的事ko家的网站,wordpress酒店转载自 在Java中如何高效的判断数组中是否包含某个元素如何检查一个数组(无序)是否包含一个特定的值#xff1f;这是一个在Java中经常用到的并且非常有用的操作。同时#xff0c;这个问题在Stack Overflow中也是一个非常热门的问题。在投票比较高的几个答案中给出了几种不同的…转载自 在Java中如何高效的判断数组中是否包含某个元素如何检查一个数组(无序)是否包含一个特定的值这是一个在Java中经常用到的并且非常有用的操作。同时这个问题在Stack Overflow中也是一个非常热门的问题。在投票比较高的几个答案中给出了几种不同的方法但是他们的时间复杂度也是各不相同的。本文将分析几种常见用法及其时间成本。 检查数组是否包含某个值的方法 使用List public static boolean useList(String[] arr, String targetValue) {return Arrays.asList(arr).contains(targetValue); } 使用Set public static boolean useSet(String[] arr, String targetValue) {SetString set new HashSetString(Arrays.asList(arr));return set.contains(targetValue); } 使用循环判断 public static boolean useLoop(String[] arr, String targetValue) {for(String s: arr){if(s.equals(targetValue))return true;}return false; } 使用Arrays.binarySearch() Arrays.binarySearch()方法只能用于有序数组如果数组无序的话得到的结果就会很奇怪。查找有序数组中是否包含某个值的用法如下 public static boolean useArraysBinarySearch(String[] arr, String targetValue) { int a  Arrays.binarySearch(arr, targetValue);if(a 0)return true;elsereturn false; } 时间复杂度 下面的代码可以大概的得出各种方法的时间成本。基本思想就是从数组中查找某个值数组的大小分别是5、1k、10k。这种方法得到的结果可能并不精确但是是最简单清晰的方式。 public static void main(String[] args) {String[] arr new String[] {  CD,  BC, EF, DE, AB};//use listlong startTime System.nanoTime();for (int i 0; i 100000; i) {useList(arr, A);}long endTime System.nanoTime();long duration endTime - startTime;System.out.println(useList:   duration / 1000000);//use setstartTime System.nanoTime();for (int i 0; i 100000; i) {useSet(arr, A);}endTime System.nanoTime();duration endTime - startTime;System.out.println(useSet:   duration / 1000000);//use loopstartTime System.nanoTime();for (int i 0; i 100000; i) {useLoop(arr, A);}endTime System.nanoTime();duration endTime - startTime;System.out.println(useLoop:   duration / 1000000);//use Arrays.binarySearch()startTime System.nanoTime();for (int i 0; i 100000; i) {useArraysBinarySearch(arr, A);}endTime System.nanoTime();duration endTime - startTime;System.out.println(useArrayBinary:   duration / 1000000); } 运行结果 useList:  13 useSet:  72 useLoop:  5 useArraysBinarySearch:  9 使用一个长度为1k的数组 String[] arr new String[1000];Random s new Random(); for(int i0; i 1000; i){arr[i] String.valueOf(s.nextInt()); } 结果 useList:  112 useSet:  2055 useLoop:  99 useArrayBinary:  12 使用一个长度为10k的数组 String[] arr new String[10000];Random s new Random(); for(int i0; i 10000; i){arr[i] String.valueOf(s.nextInt()); } 结果 useList:  1590 useSet:  23819 useLoop:  1526 useArrayBinary:  12 总结 显然使用一个简单的循环方法比使用任何集合都更加高效。许多开发人员为了方便都使用第一种方法但是他的效率也相对较低。因为将数组压入Collection类型中首先要将数组元素遍历一遍然后再使用集合类做其他操作。 如果使用Arrays.binarySearch()方法数组必须是已排序的。由于上面的数组并没有进行排序所以该方法不可使用。 实际上如果你需要借助数组或者集合类高效地检查数组中是否包含特定值一个已排序的列表或树可以做到时间复杂度为O(log(n))hashset可以达到O(1)。 英文原文结束以下是译者注使用ArrayUtils 除了以上几种以外Apache Commons类库中还提供了一个ArrayUtils类可以使用其contains方法判断数组和值的关系。 import org.apache.commons.lang3.ArrayUtils; public static boolean useArrayUtils(String[] arr, String targetValue) {return ArrayUtils.contains(arr,targetValue); } 同样使用以上几种长度的数组进行测试得出的结果是该方法的效率介于使用集合和使用循环判断之间有的时候结果甚至比使用循环要理想。 useList:  323 useSet:  3028 useLoop:  141 useArrayBinary:  12 useArrayUtils:  181 ------- useList:  3703 useSet:  35183 useLoop:  3218 useArrayBinary:  14 useArrayUtils:  3125 其实如果查看ArrayUtils.contains的源码可以发现他判断一个元素是否包含在数组中其实也是使用循环判断的方式。 部分代码如下if(array null) {return -1;} else {if(startIndex 0) {startIndex 0;}int i;if(objectToFind null) {for(i startIndex; i array.length; i) {if(array[i] null) {return i;}}} else if(array.getClass().getComponentType().isInstance(objectToFind)) {for(i startIndex; i array.length; i) {if(objectToFind.equals(array[i])) {return i;}}}return -1;} 所以相比较之下我更倾向于使用ArrayUtils工具类来进行一些合数祖相关的操作。毕竟他可以让我少写很多代码因为自己写代码难免有Bug毕竟apache提供的开源工具类库都是经过无数开发者考验过的而且效率上也并不低太多。
http://www.sadfv.cn/news/287021/

相关文章:

  • 网站建设硬件投入表wordpress主题动漫
  • 网站开发用什么数据库网站如何做404
  • 做优秀网站有什么做家常菜的网站
  • 福建中国建设工程造价管理协会网站asp网站显示空白
  • 网站备案 地域深圳建设网站排名
  • 企业网站页面宽哪里设置wordpress 爬虫插件
  • 怎样做网站备份禹州做网站的公司
  • 国外做兼职的网站网站用哪些系统做的比较好
  • 网站子页设计用wordpress建医疗网站
  • 快彩网站开发网站内容管理系统建设
  • app与网站的区别功能自己做的网站能备案
  • 中山网站建设咨询建设银行咸阳交费网站
  • 做网站要用到哪些架包网站定制怎么收费
  • 好玩有趣的网站网上做兼职老师的正规网站
  • 网站建设描述西部数码个人网站
  • 网站开发与推广方向德阳响应式网站建设
  • 四川成都网站建设公司专门做网站的软件是
  • 制作个网站大概多少钱校友网站 建设
  • 广铁建设集团门户网站网络科技有限公司和科技有限公司的区别
  • 网站备案账号是什么情况朝阳网络推广
  • 中国建设住建网站做网站开发学什么内容
  • 如何创立一个网站wordpress 优化提速
  • 网站建设开发技术天津如何建设自己的网站 知乎
  • 怎么建设网站首页镇江模板网站
  • 外贸网站都有那些网站设计业务
  • 网站建设与管理书籍网站机房建设
  • 旅游网站开发选题背景wordpress最新的编辑器
  • 做网站建设 个体经营 小微企业2023年企业所得税最新政策
  • 装饰设计网站模板北京公司注册网址
  • 百度公司做网站吗有哪些好的做兼职网站