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接口方式访问
耗时:12
class java.util.LinkedList未实现RandomAccess接口

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

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

 

 

你可能感兴趣的:(Access)