Java中RandomAccess接口的作用

た 入场券 2023-01-13 01:35 154阅读 0赞

RandomAccess接口的作用

  • RandomAccess(随机访问)当作标记,是一种标记接口,表现为一个空接口
  • 判断一个list是否实现了RandomAcess接口,从而选择不同的算法

    • 比如Collections的 binarySearch() 方法:

      1. public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) {
      2. if (list instanceof RandomAccess || list.size()<BINARYSEARCH_THRESHOLD)
      3. return Collections.indexedBinarySearch(list, key);
      4. else
      5. return Collections.iteratorBinarySearch(list, key);
      6. }
  • list下的 ArrayListLinkedList

    • ArrayList实现了RandomAccess

      • 由于ArrayList可以根据下标快速获取指定元素,故随机访问速度比较快,而for循环根据下标获取指定元素,采用的即是随机访问的方法
      • 故ArrayList采用简单的for循环进行访问速度比较快
    • LinkedList没有实现RandomAccess

      • 由于LinkedList是通过指针顺序查找元素,故按顺序访问速度比较快,而iterator中的next()方法采用的是顺序访问的方法
      • 故LinkedList采用iterator循环访问速度比较快

发表评论

表情:
评论列表 (有 0 条评论,154人围观)

还没有评论,来说两句吧...

相关阅读

    相关 RandomAccess接口作用

    通过源码我们得知该RandomAccess是一个空的接口?为什么是空的接口呢?那它的作用到底是用来干嘛的呢? 又有谁实现了它呢?实现这个接口又有什么用呢? 带着问题我们先