RandomAccess接口

标记接口

在学习RandomAccess接口之前我们先学习一下标记接口,简单的说标记接口就是没有任何属性和方法的接口,只是用来标识实现该接口的类具有某种特定的功能。
jdk中常见的标记接口有Cloneable接口、Serializable接口和本文要学习的RandomAccess接口,接口定义分别如下。
Cloneable接口:

package java.lang;

/**
 * @author  unascribed
 * @see     java.lang.CloneNotSupportedException
 * @see     java.lang.Object#clone()
 * @since   JDK1.0
 */
public interface Cloneable {
}

Serializable接口:

package java.io;

/**
 * @author  unascribed
 * @see java.io.ObjectOutputStream
 * @see java.io.ObjectInputStream
 * @see java.io.ObjectOutput
 * @see java.io.ObjectInput
 * @see java.io.Externalizable
 * @since   JDK1.1
 */
public interface Serializable {
}

RandomAccess接口:

package java.util;

/**
 * @since 1.4
 */
public interface RandomAccess {
}

可见这三个接口都没有定义方法和属性,Cloneable接口和Serializable接口表示的含义会有专门的文章来介绍,本文只介绍RandomAccess接口。

RandomAccess接口的官方解释

jdk文档对RandomAccess接口的描述可以归纳为两点:
1.实现RandomAccess接口的列表类支持快速随机访问(即可以通过下标对List进行存取操作)
2.实现RandomAccess接口的列表实例化对象list此循环

for (int i=0, n=list.size(); i < n; i++)
    list.get(i);

for (Iterator i=list.iterator(); i.hasNext(); )
    i.next();

运行速度要快

RandomAccess接口如何使用

jdk中java.util.Collections类中多处使用RandomAccess,例如Collections类的fill()方法:

public static <T> void fill(List<? super T> list, T obj) {
    int size = list.size();

    if (size < FILL_THRESHOLD || list instanceof RandomAccess) {
        for (int i=0; i<size; i++)
            list.set(i, obj);
    } else {
        ListIterator<? super T> itr = list.listIterator();
        for (int i=0; i<size; i++) {
            itr.next();
            itr.set(obj);
        }
    }
}

在遍历列表进行赋值之前会对该列表做一次校验,如果该列表实现了RandomAccess接口就使用索引对列表中指定位置的元素进行赋值,否则使用迭代器next()方法对该元素赋值。
在开发的过程中可以参考这种方式实现。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • RandomAccess接口:这是一个标记接口,如果List子类实现了RandomAccess接口,那就表示它能够...
    _fatef阅读 654评论 0 0
  • java.util.RandomAccess 用法 Random Access List(随机访问列表)如 Arr...
    东眠247阅读 4,834评论 1 51
  • 本系列出于AWeiLoveAndroid的分享,在此感谢,再结合自身经验查漏补缺,完善答案。以成系统。 Java基...
    济公大将阅读 1,556评论 1 6
  • 【书名】做人要有气度,做事要有尺度 【作者】墨墨 【金句】 1、很多事情当你拥有的时候,总觉得它平淡无味,丝毫体会...
    百花喜阅读 194评论 0 0
  • 那一刻,我轻触你的小手,那柔软、那光滑的感觉刹那间流过我的全身。 是自己的主动性带来这些,本人的意志和它的展现创造...
    ee米兰阅读 86评论 0 1