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

网站建站什么目录桂林网站建设内容

网站建站什么目录,桂林网站建设内容,环球资源网站,北京网站优化什么价格ArrayList和RandomAccess接口RandomAccess 接口Collections.binarySearch()源码总结RandomAccess 接口 首先#xff0c;RandomAccess接口是什么#xff0c;以下代码可见#xff1a; public interface RandomAccess { }RandomAccess接口其实是一个标记接口#xff0c;它只… ArrayList和RandomAccess接口RandomAccess 接口Collections.binarySearch()源码总结RandomAccess 接口 首先RandomAccess接口是什么以下代码可见 public interface RandomAccess { }RandomAccess接口其实是一个标记接口它只负责声明实现该接口的List支持快速随机访问主要目的是使算法能够在随机和顺序访问的list中表现的更加高效。 Collections.binarySearch()源码 我们来看Collections下的binarySearch方法的源码 public static Tint binarySearch(List? extends Comparable? super T list, T key) {if (list instanceof RandomAccess || list.size()BINARYSEARCH_THRESHOLD)return Collections.indexedBinarySearch(list, key);elsereturn Collections.iteratorBinarySearch(list, key);}我们可以看到在进行二分查找的时候list会先判断是否是RandomAccess也即是否实现了RandomAccess接口接着再调用想用的二分查找算法来进行其中: BINARYSEARCH_THRESHOLD Collections的一个常量5000它是二分查找的阀值。如果实现了RandomAccess接口的List执行indexedBinarySearch方法否则执行 iteratorBinarySearch方法。 分别看下这两个方法的实现: private static Tint indexedBinarySearch(List? extends Comparable? super T list, T key) {int low 0;int high list.size()-1;while (low high) {int mid (low high) 1;Comparable? super T midVal list.get(mid);int cmp midVal.compareTo(key);if (cmp 0)low mid 1;else if (cmp 0)high mid - 1;elsereturn mid; // key found}return -(low 1); // key not found}indexedBinarySearch 方法是直接通过list.get()方法来访问元素 private static Tint iteratorBinarySearch(List? extends Comparable? super T list, T key){int low 0;int high list.size()-1;ListIterator? extends Comparable? super T i list.listIterator();while (low high) {int mid (low high) 1;Comparable? super T midVal get(i, mid);int cmp midVal.compareTo(key);if (cmp 0)low mid 1;else if (cmp 0)high mid - 1;elsereturn mid; // key found}return -(low 1); // key not found}iteratorBinarySearch中是list.listIterator()来查找相应的元素 人们认识到随机访问和顺序访问之间的区别通常是模糊的。例如一些List实现提供了渐近线性访问时间如果它们在实践中获得了巨大但恒定的访问时间。这样的List实现通常应实现此接口。根据经验如果对于类的典型实例以下循环 for (int i0, nlist.size(); i n; i)list.get(i);会比下面这个更快 for (Iterator ilist.iterator(); i.hasNext(); )i.next();总结 若是集合的for循环访问数据比使用iterator访问来的高效快速那么最好去实现RandomAccess这个标记接口这样在一些框架代码中就可以根据是否实现了RandomAccess接口做出更好的决策方式 是因为它这个集合用for循环更快所以才实现RandomAccess接口注意不要搞反了 如有错误还请多多指教 转载或者引用本文内容请注明来源及原作者橘足轻重
http://www.w-s-a.com/news/629076/

相关文章:

  • 光明新区城市建设局网站长沙营销型网站制作费用
  • 网站建设制度制定wordpress主题哥
  • 门户网站的种类php网站开发实训心得
  • 流程图制作网页网络优化seo
  • 个人公益网站怎么制作wordpress flat theme
  • 做营销型网站的公司篇高端网站愿建设
  • 五莲网站建设维护推广凡科做网站的方法
  • 山东省住房建设厅网站首页网站文章更新怎么通知搜索引擎
  • 商务网站的可行性分析包括大流量网站 优化
  • 推广网站有效的方法网站数据统计
  • 自建视频网站WordPress数据库添加管理员
  • 新民电商网站建设价格咨询网站建设高效解决之道
  • 做网站需要哪些步骤网站设计介绍
  • 物流网站制作目的国外中文网站排行榜单
  • 苏州网站建设招标网站ftp的所有权归谁
  • 未央免费做网站河间网站建设
  • 酒庄企业网站app制作多少钱一个
  • 西安模板建网站网站如何做直播轮播
  • 网站功能需求表百度怎么投放自己的广告
  • 如何免费制作网站网站icp备案费用
  • 网站建设最新教程wordpress表白墙
  • android电影网站开发网站建设与设计实习报告
  • 公司汇报网站建设方案烟台seo网站推广
  • 文章网站哪里建设好找素材的网站
  • 怎么做自己的彩票网站公司建设网站价格
  • 国外比较好的设计网站网站后台无法上传图片
  • 帮别人做网站的公司是外包吗用户登录
  • 关于我们网站模板小莉帮忙郑州阳光男科医院
  • 上海门户网站怎么登录永州网站制作
  • 微信网站模版下载做销售的去哪个网站应聘