`

RandomAccess

阅读更多
RandomAccess


总结:

1.基于 JDK 1.8 源码分析

2.作用

起到判断的作用,即当前集合是否支持随机访问
顺序表(数组形式)还是单链表存储,以便使用更合适的遍历方式
RandomAccess(如ArrayList)还是Sequence List (如LinkedList)

源码:

/*
 * @(#)RandomAccess.java	1.9 06/04/21
 *
 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

package java.util;

/**
 * Marker interface used by <tt>List</tt> implementations to indicate that
 * they support fast (generally constant time) random access.  The primary
 * purpose of this interface is to allow generic algorithms to alter their
 * behavior to provide good performance when applied to either random or
 * sequential access lists.
 *
 * <p>The best algorithms for manipulating random access lists (such as
 * <tt>ArrayList</tt>) can produce quadratic behavior when applied to
 * sequential access lists (such as <tt>LinkedList</tt>).  Generic list
 * algorithms are encouraged to check whether the given list is an
 * <tt>instanceof</tt> this interface before applying an algorithm that would
 * provide poor performance if it were applied to a sequential access list,
 * and to alter their behavior if necessary to guarantee acceptable
 * performance.
 * 
 * <p>It is recognized that the distinction between random and sequential
 * access is often fuzzy.  For example, some <tt>List</tt> implementations
 * provide asymptotically linear access times if they get huge, but constant
 * access times in practice.  Such a <tt>List</tt> implementation
 * should generally implement this interface.  As a rule of thumb, a
 * <tt>List</tt> implementation should implement this interface if,
 * for typical instances of the class, this loop:
 * <pre>
 *     for (int i=0, n=list.size(); i &lt; n; i++)
 *         list.get(i);
 * </pre>
 * runs faster than this loop:
 * <pre>
 *     for (Iterator i=list.iterator(); i.hasNext(); )
 *         i.next();
 * </pre>
 *
 * <p>This interface is a member of the 
 * <a href="{@docRoot}/../technotes/guides/collections/index.html">
 * Java Collections Framework</a>.
 *
 * @since 1.4
 */
public interface RandomAccess {
}



对于顺序表 for循环通过数组下标访问的效率要高于通过 Iterator 访问的效率;反之,对于单链表要使用 Iterator 方式循环

// ArrayList 的定义
public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable

// LinkedList 的定义
public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable



总结:

所以对大量数据进行遍历时要区分当前的List的实现方式
    if (list instance of RandomAccess) {
        for(int m = 0; m < list.size(); m++){}
    }else{
        Iterator iter = list.iterator();
        while(iter.hasNext()){}
    }




博文参考:
RandomAccess接口的使用
分享到:
评论

相关推荐

    了解Java:RandomAccess

    标题中的“了解Java:RandomAccess”指的是Java编程语言中关于RandomAccess接口或随机访问的概念。在Java中,RandomAccess主要用于标记那些支持高效随机读取的输入流。这意味着,对于实现了RandomAccess接口的输入流...

    RandomAccess中文示例

    最简单的RandomAccess中文读写文件示例

    Random-Access-Performance.rar_random_random access

    A Study on Random Access Performance in Next Generation Mobile Network Systems

    several-random-access-protocols.rar_random_random access_随机接入

    在无线通信领域,随机接入(Random Access)协议是网络设备如移动终端与基站进行通信时的重要环节。随机接入协议允许多个设备在同一时间窗口内尝试发送数据,从而实现多个用户公平竞争信道资源。本文件"several-...

    计算机导论课件:Random Access Memory.pptx

    Random Access Memory (RAM)是计算机硬件中的关键组成部分,它充当临时的数据和程序存储区域,包括操作系统、应用软件指令以及用户数据。RAM的特点是随机访问,意味着可以快速地读取或写入任何位置的数据,而不受...

    5G蜂窝物联网中大规模机器型通信的速率分裂随机接入机制_Rate-Splitting Random Access Mechani

    mMTC涉及成千上万的设备,它们需要通过随机接入信道(Random Access Channel, RACH)与单一的gNodeB(gNB)进行通信。然而,传统的RACH机制在处理如此大量设备的接入请求时效率低下,容易引发拥塞和延迟问题。 为了...

    FH.rar_Into the Real_random access

    The system block diagram as shown in Figure 1 is designed to capture and store frames captured by the camera on the RC10 board in real-time into block random access memory

    RANDOM-ACCESS.zip_c++ randomaccess_random

    C++编写的随机访问文件程序,支持对文件的读,写,修改文件,添加文件,删除文件

    Java接口RandomAccess全面了解

    Java中的`RandomAccess`接口是Java集合框架的一部分,主要用于标记那些支持高效随机访问的`List`实现。这个接口本身没有定义任何方法,它的主要作用是作为一个标识,供其他代码判断`List`实例是否支持快速随机读取...

    java 中RandomAccess接口源码分析

    java 中RandomAccess接口源码分析 java 中RandomAccess接口源码分析是java.util包中的一个接口,该接口的主要作用是标记List实现是否支持快速的随机访问。通过实现这个接口,List实现可以表明它们支持快速的随机...

    CSMA_CA.rar_CSMA/CA_Different_random access

    在无线通信领域,载波监听多路访问/冲突避免(Carrier Sense Multiple Access with Collision Avoidance,简称CSMA/CA)是一种重要的介质访问控制(Medium Access Control,MAC)协议。这种协议主要用于避免无线网络...

    Random Access Memories-crx插件

    提示您在一周中的意外时间记录您的想法 您是否曾经想写日记,却没有时间写一篇日记? 好吧,日记为您找到时间了! 随机存取存储器是一个弹出窗口,它会在一周中以随机设置的间隔出现,以供您反射和书写。...

    并行算法-PRAM模型

    PRAM(Parallel Random Access Machine)模型是一种理论上的并行计算模型,广泛用于描述和分析并行算法。PRAM模型通过模拟多个处理器共享全局存储器的环境来探讨并行算法的性能。 PRAM模型的核心特点在于其并行性,...

    Random Access Backup-开源

    "Random Access Backup(RAB)是一款开源备份工具,专门设计用于将数据备份到可移动存储媒体,如DVD RAM和CD。这款软件的核心特性是它的全面性和灵活性,它不仅支持完整备份,还支持增量备份,这两种备份方式都有其...

    Random Access File Maker 2:它将允许您创建随机访问数据文件结构。-开源

    **随机访问文件(Random Access File)** 随机访问文件在计算机编程中是一种常见的文件处理方式,它允许程序员在文件中的任意位置读写数据,而不仅仅是按照文件的顺序进行操作。这与顺序访问文件不同,顺序访问文件...

    GPP-based Random Access Preamble Detection in TD-LTE

    随机接入前导序列是UE在随机接入信道(Physical Random Access Channel,PRACH)发送的一种特殊信号,用于基站识别。前导检测算法的作用是准确且及时地检测出这些前导信号,这对于系统的正常工作至关重要。 论文...

    前端开源库-random-access-storage

    "random-access-storage"是一个这样的开源库,专门用于实现前端的随机存取存储器(Random Access Storage)。这个库使得在浏览器环境中创建和操作类似于磁盘驱动器的随机访问存储实例成为可能。 随机存取存储器...

Global site tag (gtag.js) - Google Analytics