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

转载自https://www.cnblogs.com/lion88/p/4186820.html

JAVA中RandomAccess接口相关推荐

  1. Java中实现接口与继承的区别

    ** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...

  2. Objective-C 入门(七)协议 protocol(JAVA中的接口)

    Objective-C 入门(七)协议 protocol(JAVA中的接口) 接口的作用想必大家都比较了解 OV中的 protocol 相比接口作用相似 语法稍有不同 1.先来看声明一个协议 在创建文 ...

  3. Java中的接口命名[关闭]

    本文翻译自:Interface naming in Java [closed] Most OO languages prefix their interface names with a capita ...

  4. java中接口什么时候用_我什么时候应该在java中使用接口?

    在Java中精确使用接口的一个很好的例子将是理想的,适用于任何特定的规则. 看看丹以前所有的问题,他似乎只是逐字逐句地张贴家庭作业/考试问题. 令人惊讶的是,这些不是考试题或其他-今天才找到这个网站, ...

  5. Java 中 Comparable 接口的意义和用法.

    在之前的博文中已经介绍了Java中Collection 接口和 Collections类. http://blog.csdn.net/nvd11/article/details/21516075 一, ...

  6. java中的接口的定义以及实现关系

    一.什么是接口? - 硬件接口:设备之间的连接方式 - 软件接口:程序代码,特殊的类,表示一种规范,是具有N个方法的特征集合. java中的接口: 专家说的多个抽象类的抽象就是接口. interfac ...

  7. java中get接口示例_Java即时类| 带示例的get()方法

    java中get接口示例 即时类的get()方法 (Instant Class get() method) get() method is available in java.time package ...

  8. java中get接口示例_Java LocalDateTime类| 带示例的get()方法

    java中get接口示例 LocalDateTime类的get()方法 (LocalDateTime Class get() method) get() method is available in ...

  9. JAVA中常用接口的介绍及使用示例 java lang Comparable

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...

最新文章

  1. 矩阵快速幂 - 湘潭大学
  2. intel x540-at2 openstack 下桥接故障
  3. HTML5 Boilerplate - 让页面有个好的开始
  4. java 文件读写demo
  5. 空格替换_O(n)方法
  6. sublime java cmd_在sublime text3设置java环境
  7. 走进rxjs的世界 - 万物皆流 - Everything is a stream
  8. 【转】x.509证书在WCF中的应用(CS篇)
  9. 京东开普勒php接口,IOS菜鸟初学第十五篇:接入京东开普勒sdk,呼起京东app打开任意京东的链接-Go语言中文社区...
  10. 八皇后问题 (信息学奥赛一本通-T1213)
  11. 如何解决anaconda出现CondaHTTPError问题
  12. Python+tkinter动态创建与销毁组件小案例
  13. Element-UI-的布局和容器---Element-UI工作笔记003
  14. 5 | Spatial-based GNN/convolution模型之DGC
  15. 地理信息系统概论_南京大学815地理信息系统概论考研初试历年真题参考书目重难点笔记...
  16. Python库积累之Selenium(一)-Seleniun基础
  17. iOS设计模式四部曲(二) 结构型模式 内附Demo
  18. c语言手机通讯录用动态链表,通讯录用链表来连接怎么弄????
  19. 高精度地图-黑客又要开始装逼了!
  20. Java进阶学习路线图

热门文章

  1. [转]Facebook 如何管理150亿张照片
  2. No matching provisioning profiles found 真机测试问题
  3. 支导线手工和电脑怎么计算方位角并推算坐标
  4. AlphaSSL证书和GlobalSign SSL证书介绍
  5. 爪哇国新游记之三十三----目录文件操作
  6. VMware vSphere理论
  7. Springboot项目配置404错误页面
  8. 月薪4万是一种什么样的感受?
  9. python通过指定网卡发包_Python选择网卡发包及接收数据包
  10. C语言练手小代码------five