首页 > 学院 > 开发设计 > 正文

RandomAccess接口

2019-11-14 22:22:44
字体:
来源:转载
供稿:网友
Randomaccess接口  RandomAccess是一个标记接口,实现该接口表示支持快速访问。这是一个空接口,没有任何方法。    当实现该接口时,说明支持快速访问。即:for (int i=0, n=list.size(); i<n; i++)list.get(i);要比for (Iterator i=list.iterator(); i.hasNext(); )i.next();访问速度快。当没有实现该接口时,for (int i=0, n=list.size(); i<n; i++)list.get(i);要比for (Iterator i=list.iterator(); i.hasNext(); )i.next();访问速度慢。

例子

package com.lion;import java.util.ArrayList;import java.util.Date;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.RandomAccess;public class RandomAccessTest {    public static void traverse(List list) {        long startTime;        long endTime;        //遍历前先判读是否实现了RandomAccess接口        if (list instanceof RandomAccess) {           System.out.PRintln(list.getClass()+"实现了RandomAccess接口");        }        else        {             System.out.println(list.getClass()+"未实现RandomAccess接口");        }                System.out.println("/n以实现RandomAccess接口方式访问");        startTime = System.currentTimeMillis();        for (int i = 0; i < list.size(); i++) {            Object o = list.get(i);            // System.out.println(o);        }        endTime = System.currentTimeMillis();        System.out.println("耗时:" + (endTime - startTime));                System.out.println("/n以未实现RandomAccess接口方式访问");        startTime = System.currentTimeMillis();        for (Iterator iter = list.iterator(); iter.hasNext();) {            Object o = iter.next();            // System.out.println(o);        }        endTime = System.currentTimeMillis();        System.out.println("耗时:" + (endTime - startTime));    }    /**     * @param args     */    public static void main(String[] args) {        List arraylist = new ArrayList();        // 添加1000个元素        for (int i = 0; i < 100000; i++) {            arraylist.add("aaa");        }        List linkList = new LinkedList();        // 添加1000个元素        for (int i = 0; i < 100000; i++) {            linkList.add("aaa");        }        traverse(arraylist);        traverse(linkList);    }}

运行结果:

class java.util.ArrayList实现了RandomAccess接口

以实现RandomAccess接口方式访问耗时:9

以未实现RandomAccess接口方式访问耗时:12class java.util.LinkedList未实现RandomAccess接口

以实现RandomAccess接口方式访问耗时:4128

以未实现RandomAccess接口方式访问耗时:7


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表