JAVA中RandomAccess接口
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接口相关推荐
- Java中实现接口与继承的区别
** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...
- Objective-C 入门(七)协议 protocol(JAVA中的接口)
Objective-C 入门(七)协议 protocol(JAVA中的接口) 接口的作用想必大家都比较了解 OV中的 protocol 相比接口作用相似 语法稍有不同 1.先来看声明一个协议 在创建文 ...
- Java中的接口命名[关闭]
本文翻译自:Interface naming in Java [closed] Most OO languages prefix their interface names with a capita ...
- java中接口什么时候用_我什么时候应该在java中使用接口?
在Java中精确使用接口的一个很好的例子将是理想的,适用于任何特定的规则. 看看丹以前所有的问题,他似乎只是逐字逐句地张贴家庭作业/考试问题. 令人惊讶的是,这些不是考试题或其他-今天才找到这个网站, ...
- Java 中 Comparable 接口的意义和用法.
在之前的博文中已经介绍了Java中Collection 接口和 Collections类. http://blog.csdn.net/nvd11/article/details/21516075 一, ...
- java中的接口的定义以及实现关系
一.什么是接口? - 硬件接口:设备之间的连接方式 - 软件接口:程序代码,特殊的类,表示一种规范,是具有N个方法的特征集合. java中的接口: 专家说的多个抽象类的抽象就是接口. interfac ...
- java中get接口示例_Java即时类| 带示例的get()方法
java中get接口示例 即时类的get()方法 (Instant Class get() method) get() method is available in java.time package ...
- java中get接口示例_Java LocalDateTime类| 带示例的get()方法
java中get接口示例 LocalDateTime类的get()方法 (LocalDateTime Class get() method) get() method is available in ...
- JAVA中常用接口的介绍及使用示例 java lang Comparable
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...
最新文章
- 矩阵快速幂 - 湘潭大学
- intel x540-at2 openstack 下桥接故障
- HTML5 Boilerplate - 让页面有个好的开始
- java 文件读写demo
- 空格替换_O(n)方法
- sublime java cmd_在sublime text3设置java环境
- 走进rxjs的世界 - 万物皆流 - Everything is a stream
- 【转】x.509证书在WCF中的应用(CS篇)
- 京东开普勒php接口,IOS菜鸟初学第十五篇:接入京东开普勒sdk,呼起京东app打开任意京东的链接-Go语言中文社区...
- 八皇后问题 (信息学奥赛一本通-T1213)
- 如何解决anaconda出现CondaHTTPError问题
- Python+tkinter动态创建与销毁组件小案例
- Element-UI-的布局和容器---Element-UI工作笔记003
- 5 | Spatial-based GNN/convolution模型之DGC
- 地理信息系统概论_南京大学815地理信息系统概论考研初试历年真题参考书目重难点笔记...
- Python库积累之Selenium(一)-Seleniun基础
- iOS设计模式四部曲(二) 结构型模式 内附Demo
- c语言手机通讯录用动态链表,通讯录用链表来连接怎么弄????
- 高精度地图-黑客又要开始装逼了!
- Java进阶学习路线图