ArrayList和LinkedList的区别之一 :RandomAccess接口

打开ArrayList和LinkedList的源码后会发现ArrayList实现了一个RandomAccess接口而LinkedList没有

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable
public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable

为什么要这样呢?
打开RandomAccess接口
在这里插入图片描述
发现这个接口没有内容,这样的接口叫标志接口
那么这个接口标志了什么内容呢?
我们可以知道的是ArrayList和LinkedList这两者的底层实现是不同的.
ArrayList底层是用数组实现的,这种实现方法使得ArrayList通过随机遍历的速度非常快,但是通过迭代器的方式访问却很慢.而LinkList却是反过来的.

那么为什么要用这个标志接口呢?
开发的时候有时候并不知道一个API返回的类型是什么,比如说从数据库中取得一系列的数据,但是我们却并不知道其放在什么数据结构中,也就不知道效率高的遍历方法是什么,那么就可以通过 instanceof 关键字来判断是否实现了该接口,从而知道用什么遍历方法.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值