java linkedlist 查找_java中的ArrayList和LinkedList的二分查找速度比

这个博客通过对比ArrayList和LinkedList在执行二分查找时的时间消耗,展示了两种数据结构在不同操作上的效率差异。在Java中,由于ArrayList实现了RandomAccess接口,适合于随机访问,因此在二分查找这种需要快速定位的场景下,ArrayList表现远优于LinkedList。LinkedList由于其链式结构,在二分查找中表现出显著的性能劣势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package tian;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.LinkedList;

import java.util.List;

import java.util.Random;

/**

*

* ArrayList和LinkedeList的二分查找查找时间比较

*

*/

public class TestList{

public static final int N=50000;

public static List values;

static{

//定义一个数组

Integer vals[]=new Integer[N];

Random r=new Random();

int currval=0;

for(int i=0;i

vals[i]=currval;

//获得随机数,这样就可以确保是数组是升序

currval+=r.nextInt(100)+i;

}

//返回一个受指定数组支持的固定大小的列表

values=Arrays.asList(vals);

}

static long timeList(List lst){

//获得当前时间

long start=System.currentTimeMillis();

for(int i=0;i

//二分查找,获得index,此方法要求list为升序,如果没有对列表进行排序,则结果是不确定的

int index=Collections.binarySearch(lst, values.get(i));

//判断找出来的位置是否为对应的位置,

if(index!=i){

System.out.println("**出错了**");

}

}

//算出所花时间

return System.currentTimeMillis()-start;

}

public static void main(String args[]){

System.out.println("ArrayList消耗时间:"+timeList(new ArrayList(values)));

System.out.println("LinkedList消耗时间:"+timeList(new LinkedList(values)));

//  第一次运行

//  ArrayList消耗时间:47

//  LinkedList消耗时间:74781

//  第二次运行

//  ArrayList消耗时间:32

//  LinkedList消耗时间:72687

//时间不是固定的,但是不管你运行多少次,都可以看得出两者时间比

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值