`
wanghailiang333
  • 浏览: 198136 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

Java中LinkedList与ArrayList对比

 
阅读更多

在学java数据结构的时候发现有LinkedList与ArrayList,就想知道他们的性能如何,所以做了如下的对比,

 

对比做得比较粗糙,也很不严谨,不过也有一定的参考价值吧。

 

/*
 * 测试数据大小 1000 - 100000
 * 测试List的3个方法:
 * 1、add(Element)  新加入元素
 * 2、add(index,Element)  固定位置插入元素
 * 3、remove(Element)  删除特定元素
 * 结果为执行所需时间
 */


import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class LinkListTest {

	public static void main(String[] args) {
		
		long time;
		int TestNum ;
		List<String> link_list = null;
		List<String> array_list = null;
		
		
		for(int j = 3 ; j <=5 ;j ++){
			TestNum = (int)Math.pow(10, j);
			System.out.println("Test amount :"+TestNum);
			
			link_list = new LinkedList<String>();
			array_list = new ArrayList<String>();
			
			/*list add*/
			time = System.currentTimeMillis();
			for(int i = 0 ; i<TestNum ; i++){
				link_list.add(i+"");
			}
			time = System.currentTimeMillis() - time;
			System.out.printf("%18s:%6dms\n","link_list_add",time);
			
			time = System.currentTimeMillis();
			for(int i = 0 ; i<TestNum ; i++){
				array_list.add(i+"");
			}
			time = System.currentTimeMillis() - time;
			System.out.printf("%18s:%6dms\n","array_list_add",time);
			
			
			/*list add index*/
			time = System.currentTimeMillis();
			for(int i = 0 ; i<TestNum ; i++){
				link_list.add(i*2, i+"");
			}
			time = System.currentTimeMillis() - time;
			System.out.printf("%18s:%6dms\n","link_list_insert",time);
			
			time = System.currentTimeMillis();
			for(int i = 0 ; i<TestNum ; i++){
				array_list.add(i*2, i+"");
			}
			time = System.currentTimeMillis() - time;
			System.out.printf("%18s:%6dms\n","arry_list_insert",time);	
			
			
			/*list remove index*/
			time = System.currentTimeMillis();
			for(int i = 0 ; i<TestNum ; i++){
				link_list.remove(i);
			}
			time = System.currentTimeMillis() - time;
			System.out.printf("%18s:%6dms\n","link_list_remove",time);
			
			time = System.currentTimeMillis();
			for(int i = 0 ; i<TestNum ; i++){
				array_list.remove(i);
			}
			time = System.currentTimeMillis() - time;
			System.out.printf("%18s:%6dms\n","array_list_remove",time);
			
			
			System.out.printf("%18s:%8d\n","link_list_size",link_list.size());
			System.out.printf("%18s:%8d\n","array_list_size",array_list.size());
			
			link_list = null;
			array_list = null;
			
			System.gc();

		}
		
	}

}
 
测试结果:
Test amount :1000
     link_list_add:    15ms
    array_list_add:    31ms
  link_list_insert:     0ms
  arry_list_insert:     0ms
  link_list_remove:     0ms
 array_list_remove:     0ms
    link_list_size:    1000
   array_list_size:    1000
Test amount :10000
     link_list_add:    16ms
    array_list_add:     0ms
  link_list_insert:  1000ms
  arry_list_insert:    94ms
  link_list_remove:   750ms
 array_list_remove:   156ms
    link_list_size:   10000
   array_list_size:   10000
Test amount :100000
     link_list_add:   141ms
    array_list_add:   265ms
  link_list_insert:186797ms
  arry_list_insert: 12344ms
  link_list_remove:178812ms
 array_list_remove: 28954ms
    link_list_size:  100000
   array_list_size:  100000

 

发现一个很有趣的现象,在数据比较小的时候LinkedList的执行速度很快,

 

在数据比较大的时候,很明显的看出ArrayList的执行速度更快,

 

与自己的想象刚好相反。

分享到:
评论
1 楼 yin_chinawitsky 2011-06-30  
路过了、、、、

相关推荐

    java中ArrayList与LinkedList对比详情

    Java 中 ArrayList 与 LinkedList 对比详情 在 Java 中,ArrayList 和 LinkedList 是两个常用的集合实现方式,它们都实现了 Collection 接口,但是它们之间存在着一些关键的差异。本文将通过实例对比 Java 中 ...

    ArrayList LinkedList Vector性能对比

    2. **线程安全**:ArrayList和LinkedList不是线程安全的,如果在多线程环境中使用,需要手动添加同步机制,或者选择Vector。 3. **内存消耗**:LinkedList比ArrayList和Vector占用更多的内存,因为它需要存储额外的...

    关于arraylist和linkedList的区别

    在Java编程语言中,`ArrayList`与`LinkedList`都是`List`接口的具体实现类,用于存储元素集合。虽然它们都实现了同样的接口并且提供了相同的基本功能,但在内部实现机制、性能特点以及适用场景等方面存在显著差异。 ...

    java中容器类ArrayList(底层数组实现)和数组存取效率简单测试

    测试可能会对比ArrayList的get、add、remove等操作与直接操作数组的性能差异,通过运行时间或者循环次数来量化这种差异。这样的测试对于理解ArrayList的工作原理和性能瓶颈非常有帮助。 在实际应用中,如果对存取...

    Java中的ArrayList的底层源码解读、LinkedList、Vector的区别介绍

    适用人群:JavaSE初学者,对源码感兴趣的,想要深度了解ArrayList底层实现、数据结构、add方法、Remove方法、以及自动扩容机制的同学,并且对ArrayList已经有过使用,想要学习它与LinkedList,Vector等的区别,该...

    比较ArrayList、LinkedList、Vector1

    【ArrayList、LinkedList、Vector对比分析】 1. **List概述** List接口是Java集合框架中的重要组成部分,它是一个有序的集合,允许重复元素,并且保持插入顺序。List接口的实现类主要有ArrayList、LinkedList和...

    对比Vector、ArrayList、LinkedList1

    在Java集合框架中,Vector、ArrayList和LinkedList是三种常见的List接口实现类,它们各自具有不同的特点和适用场景。下面我们将详细对比这三个类的区别。 1. **Vector** - **线程安全**:Vector是线程安全的,因为...

    分析Java中ArrayList与LinkedList列表结构的

    ArrayList与LinkedList是Java集合框架中两种常见的列表结构,它们都实现了List接口,但在实现方式和性能上有所不同。 **ArrayList源码分析** ArrayList内部基于动态数组实现,它的核心数据成员是一个Object类型的...

    第8讲 对比Vector、ArrayList、LinkedList有何区别1

    在Java集合框架中,Vector、ArrayList和LinkedList都是List接口的实现,它们提供了有序集合的功能,允许根据位置进行元素的添加、删除和查找。然而,它们在设计和性能上有着显著的区别。 首先,Vector是Java早期...

    arraylist-linkedlist-test.zip

    ArrayList和LinkedList是Java集合框架中两种重要的动态数组实现,它们都是List接口的实现类,但它们在存储和操作数据方面有着显著的区别。本文件"arraylist-linkedlist-test.zip"主要探讨了在执行添加和删除元素操作...

    JAVALinkedList和ArrayList的使用及性

    Java中的LinkedList和ArrayList是两种非常常见的集合类,它们都是List接口的实现,但在实现方式和性能特性上有所不同。本文将详细探讨这两种数据结构的使用场景、底层原理以及性能对比。 LinkedList是一个基于双向...

    benchmark-lists:ArrayList 与 LinkedList

    在Java编程语言中,`ArrayList`和`LinkedList`都是`java.util`包下实现List接口的两种重要数据结构。它们各自具有不同的特性和用途,适用于不同的场景。本篇将深入探讨`ArrayList`和`LinkedList`的基本概念、工作...

    java中ArrayList 、LinkList的区别分析

    在Java编程语言中,ArrayList和LinkedList都是集合框架中两种重要的列表实现,它们分别基于不同的数据结构,具有不同的特性和性能特点。以下是对这两个类的详细分析: 1. 数据结构: - ArrayList是基于动态数组...

    Arraylist初始应用

    10. ArrayList与LinkedList对比 ArrayList适合频繁进行随机访问但不常插入和删除的场景,而LinkedList适合于频繁插入和删除,但随机访问效率低。 总结,ArrayList是Java集合框架中一个重要的容器,了解其基本操作和...

    毕向东1404

    最后,在"黑马程序员_毕向东_Java基础视频教程第14天-10-集合框架(ArrayList练习).avi"中,他会介绍ArrayList的用法,并通过练习来对比ArrayList与LinkedList在不同场景下的性能差异。 总的来说,这个系列课程旨在...

    Java集合框架ArrayListJava开发Java经验

    在实际的Java开发中,理解ArrayList与其他集合类(如LinkedList、HashSet、HashMap等)之间的区别和使用场景至关重要。熟练掌握ArrayList的操作和优化技巧,能够帮助开发者编写出更加高效、易维护的代码。此外,了解...

    LinkedList源码学习分析

    本文将深入探讨LinkedList的实现原理、核心方法的代码实现,并对比ArrayList,理解其特性和使用场景。 首先,LinkedList底层采用链表数据结构,这种结构允许在任意位置插入和删除元素,而不需要移动其他元素。链表...

    Java毕业设计-专利对比分析小程序-演示视频(高分期末大作业).rar

    2. **Java集合框架**:在处理专利数据时,可能会用到ArrayList、LinkedList、HashMap等集合类来存储和操作数据。了解这些数据结构的特性及其在不同场景下的适用性是必要的。 3. **文件操作与IO流**:为了读取和写入...

Global site tag (gtag.js) - Google Analytics