码迷,mamicode.com
首页 > 数据库 > 详细

RandomAccess接口

时间:2014-12-26 16:17:30      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

  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

 

 

RandomAccess接口

标签:

原文地址:http://www.cnblogs.com/lion88/p/4186820.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!