首页 > 其他分享 >ArrayList为什么比LinkedList查询速度快

ArrayList为什么比LinkedList查询速度快

时间:2022-11-15 21:04:06浏览次数:72  
标签:LinkedList idx get int ArrayList 查询 size

知乎:https://www.zhihu.com/question/61920401

举个简单的例子:假如有很多人,排成长队,这个时候要找5号的人就非常简单,问都不用问,直接定位。假如不排成长队,只是随机站在很大的广场里面,但是每个人只知道自己的前一个人和后一个人的位置,而且你只知道第一个人的位置,这个时候你要找第5个人的时候你就得从第一个人开始问后面的是谁,一直问下去才知道第5个人在哪里。   先看源码
ArrayList的get()方法:时间复杂度为O(1)
public AnyType get(int idx) {
        if(idx < 0 || idx >= size())
            throw new ArrayIndexOutOfBoundsException();
        return theItems[idx];
}

LinkedList的get()方法:时间复杂度为O(N)

private Node<AnyType> getNode(int idx, int lower, int upper) {
        Node<AnyType> p;

        if(idx < lower || idx > upper)
            throw new IndexOutOfBoundsException();

        if(idx < (size() >> 1)) {
            p = beginMarker.next;
            for(int i = 0; i < idx; i++)
                p = p.next;
        }else {
            p = endMarker;
            for(int i = size(); i >idx; i--)
                p = p.prev;
        }

        return p;
    }

ArrayList可以直接通过数组下标得到元素,而LinkedList则需要根据所给的下标从头部或尾部开始往下标的位置依次获得下一个元素或上一个元素。

标签:LinkedList,idx,get,int,ArrayList,查询,size
From: https://www.cnblogs.com/zuiniub/p/16893878.html

相关文章

  • 连接查询
    连接查询有表t1和表t2:mysql>SELECT*FROMt1;m1n11a2b3cmysql>SELECT*FROMt2;m2n22b3c4d连接的本质就是把各个连......
  • 记录一个gorm发生全局查询条件的问题
       正常情况下在使用gorm做修改操作时,会使用omit过滤一些字段,比如上图中修改的时候就不应该修改创建时间和创建人字段的值。关键点在于上图如果omit中没有增加id字......
  • mysql查询每张表有多少条记录
    mysql查询每个表有多少条记录的方法:执行【selecttable_name,table_rowsfromtableswhereTABLE_SCHEMA='数据库的名称';】语句即可。mysql查询每个表分别有多少条记......
  • 前后端架构技术记录-动态列与查询条件
    目前做过的许多项目都是后台管理的多,基本上页面上的参数和查询条件都是能够通过代码生成出来的。构想有几点动态配置条件与列,生成对于的vue的条件-列表,java的bean,sql代......
  • 记录一次11表关联查询的优化
    一、优化背景接收的历史项目有一个存储过程,查询涉及11张表。单个存储过程在线上查询一次耗时时间较长。获取该存储过程在无压力的测试库单独执行,最好的情况,执行单次需要......
  • 解读数仓常用模糊查询的优化方法
    摘要:本文讲解了GaussDB(DWS)上模糊查询常用的性能优化方法,通过创建索引,能够提升多种场景下模糊查询语句的执行速度。本文分享自华为云社区《GaussDB(DWS)模糊查询性能优......
  • 023.ManyToOne对象关联查询
    1.在GoodsDetail.java中添加少的一方的实体privateGoodsgoods;2.在goods_detail.xml中进行对象关联的描述<resultMapid="rmGoodsDetail"type="com.imooc.m......
  • Mysql-分页查询
    --从0开始查询,查询3条数据;SELECT*fromstuLIMIT0,3;--每页显示3条数据,查询第1页的数据;SELECT*fromstuLIMIT0,3;--每页显示3条数据,查询第2页的数据;SELECT......
  • Flask 学习-96.Flask-SQLAlchemy 判断查询结果是否存在的几种方式
    前言在查询的时候,经常需要先判断是否存在结果,再进行下一步操作。这里总结了判断查询结果是否存在的几种方式count()统计个数count()方法返回记录条数,使用示例withap......
  • sql server 数据库系统表及表结构查询
    sysobjects表结构:列名数据类型描述namesysname对象名,常用列idint对象标识号xtypechar(2)对象类型,常用列。xtype 可以是下列对象类型中的......