通过一组直观的数据了解单链表和线性表的特点

本文通过实验对比了单链表与线性表在插入和搜索操作上的性能差异,结果显示链表插入速度快但搜索效率较低,而线性表则正好相反。

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



程序代码:

/*
* 通过一组数据直观了解单链表和线性表的特点
* Product by Pandajj at 15:23 2007-12-19 Wuhan
*/


package LinkedStructure;

import java.util.AbstractList;
import java.util.LinkedList;
import java.util.ArrayList;
import java.lang.System;

public class TestLListAndAList {
  
public static void main(String[] args) {
    LinkedList
<Integer> list1 = new LinkedList<Integer>();
    ArrayList
<Integer> list2 = new ArrayList<Integer>();

    
// 向两个表中各插入1000000个整数
    for (int i = 0; i < 1000000; i++{
      list1.add(
new Integer(i));
      list2.add(
new Integer(i));
    }

    
    
// 测量分别向两个表中index=100的位置插入整数10的用时
    insertOneInteger(list1, 10010);
    insertOneInteger(list2, 
10010);
    
    
// 测量分别在两个表中搜索666666的用时
    searchOneInteger(list1,666666);
    searchOneInteger(list2,
666666);
  }

  
  
public static void insertOneInteger(AbstractList<Integer> list, int index,
      
int num) {
    
long start = System.nanoTime();
    list.add(index, 
new Integer(num));
    
long end = System.nanoTime();
    System.out.println(
"Insert integer " + num + " at index " + index + " on "
        
+ list.getClass().getSimpleName() + ". Time escaped: "
        
+ (end - start) + "ns");
  }


  
public static void searchOneInteger(AbstractList<Integer> list, int num) {
    
long start = System.nanoTime();
    list.contains(num);
    
long end = System.nanoTime();
    System.out.println(
"Search integer " + num + " on "
        
+ list.getClass().getSimpleName() + ". Time escaped: "
        
+ (end - start) + "ns");
  }

}



运行结果:

Insert integer 10 at index 100 on LinkedList. Time escaped: 34362ns
Insert integer 10 at index 100 on ArrayList. Time escaped: 4608406ns
Search integer 666666 on LinkedList. Time escaped: 28750302ns
Search integer 666666 on ArrayList. Time escaped: 12788776ns

我们都知道向单链表中插入节点速度很快,但是搜索节点速度欠佳。

相反,线性表的搜索速度很快,但是插入数据速度却慢的惊人。

通过这组数据,可以很直观的看到这一点。

希望可以加深印象,有助于您的学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值