IT人生

  • 首页
  • 归档
  • kafka
  • Java
  • Spring
  • Golang
  • SQL
  • Spark
  • ElasticSearch
  • 关于

  • 搜索
Phoenix HBase Kudu ElasticSearch Spring 数据结构 操作系统 Kettle Azkaban Sqoop Hive Yarn Redis Mybatis Impala Cloudera 大数据 HDFS mycat shell Linux 架构 并发 mysql sql golang java 工具 spark kafka 人生

JDK源码分析-RandomAccess

发表于 2017-01-15 | 分类于 java | 0 | 阅读次数 171

系列文章:

  1. JDK源码分析-transient关键字
  2. JDK源码分析-transient关键字
  3. JDK源码分析-String
  4. JDK源码分析-AbstractStringBuilder
  5. JDK源码分析-StringBuffer和StringBuilder
  6. JDK源码分析-RandomAccess
  7. JDK源码分析-ArrayList
  8. JDK源码分析-LinkedList
  9. JDK源码分析-HashMap
  10. JDK源码分析-HashSet
  11. JDK源码分析-LinkedHashMap
  12. JDK源码分析-ConcurrentHashMap

RandomAccess在计算机中的含义

在计算机科学中,随机访问(RandomAccess)是从大量的可寻址元素的数据中访问任何元素大致和访问其他元素一样简洁有效,不管多少元素在这个集合中。与随机访问相反的是顺序访问(SequenceAccess)

接口定义

RandomAccess在java中是一个比较特殊的接口,这个接口是一个标记接口,并没有定义任何的方法:

public interface RandomAccess {
}

RandomAccess 就是一个标记接口,用于标明实现该接口的List支持快速随机访问,主要目的是使算法能够在随机和顺序访问的List中性能更加高效

在java中的意义

如在进行二分查找时,首先判断list是否实现了RandomAccess,然后选择执行最优算法。 如果集合类是RandomAccess的实现,则尽量用for(int i = 0; i < size; i++) 即for循环来遍历,而不是用Iterator 迭代器来进行迭代

public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) {
    if (list instanceof RandomAccess || list.size()<BINARYSEARCH_THRESHOLD)
        return Collections.indexedBinarySearch(list, key);
    else
        return Collections.iteratorBinarySearch(list, key);
}

参考

  • https://blog.csdn.net/u014615707/article/details/80547598
  • 本文作者: Randy
  • 本文链接: http://www.itrensheng.com/archives/RandomAccess
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# Phoenix # HBase # Kudu # ElasticSearch # Spring # 数据结构 # 操作系统 # Kettle # Azkaban # Sqoop # Hive # Yarn # Redis # Mybatis # Impala # Cloudera # 大数据 # HDFS # mycat # shell # Linux # 架构 # 并发 # mysql # sql # golang # java # 工具 # spark # kafka # 人生
JDK源码分析-StringBuffer和StringBuilder
JDK源码分析-ArrayList
  • 文章目录
  • 站点概览
Randy

Randy

技术可以暂时落后,但任何时候都要有上进的信念

80 日志
27 分类
31 标签
RSS
Github E-mail
Creative Commons
© 2021 备案号:沪ICP备19020689号-1
Randy的个人网站