今天有时间自己也测试了下ArrayList与LinkedList在读写操作的性能,结果如下:
os:winxp sp2 JDK1.5.10 cpu:奔腾D2.8 内存:1G
在10000条数据下:
结果一:
ArrayList add Method 耗时:0
ArrayList get Method 耗时:15
ArrayList iterator Method 耗时:0
ArrayList remove Method 耗时:79
LinkedList add Method 耗时:15
LinkedList get Method 耗时:266
LinkedList iterator Method 耗时:0
LinkedList remove Method 耗时:0
array size:0
link size:0
结果二:
ArrayList add Method 耗时:15
ArrayList get Method 耗时:0
ArrayList iterator Method 耗时:0
ArrayList remove Method 耗时:78
LinkedList add Method 耗时:16
LinkedList get Method 耗时:266
LinkedList iterator Method 耗时:0
LinkedList remove Method 耗时:15
array size:0
link size:0
比率基本是5:5
在100000条数据下:
ArrayList add Method 耗时:78
ArrayList get Method 耗时:0
ArrayList iterator Method 耗时:16
ArrayList remove Method 耗时:7672
LinkedList add Method 耗时:109
LinkedList get Method 耗时:40547
LinkedList iterator Method 耗时:0
LinkedList remove Method 耗时:16
array size:0
link size:0
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.LinkedList;;
/**
* 描述:小波think
* **/
public class Test {
private static List array = new ArrayList();
private static List link = new LinkedList();
private static final int count = 10000;
public static void testArrayListAddMethod(){
long start = System.currentTimeMillis();
for(int i=0;i<count;i++){
array.add(i);
}
System.out.println("ArrayList add Method 耗时:"+(System.currentTimeMillis()-start));
}
public static void testArrayListRemoveMethod(){
int size = count;
long start = System.currentTimeMillis();
for(int i=0;i<size;i++){
array.remove(i);
i--;
size--;
}
System.out.println("ArrayList remove Method 耗时:"+(System.currentTimeMillis()-start));
}
public static void testArrayListGetMethod(){
long start = System.currentTimeMillis();
for(int i=0;i<count;i++){
array.get(i);
}
System.out.println("ArrayList get Method 耗时:"+(System.currentTimeMillis()-start));
}
public static void testArrayListIteratorMethod(){
Iterator it = array.iterator();
long start = System.currentTimeMillis();
while(it.hasNext()){
it.next();
}
System.out.println("ArrayList iterator Method 耗时:"+(System.currentTimeMillis()-start));
}
public static void testLinkedListAddMethod(){
long start = System.currentTimeMillis();
for(int i=0;i<count;i++){
link.add(i);
}
System.out.println("LinkedList add Method 耗时:"+(System.currentTimeMillis()-start));
}
public static void testLinkedListRemoveMethod(){
int size = count;
long start = System.currentTimeMillis();
for(int i=0;i<size;i++){
link.remove(i);
i--;
size--;
}
System.out.println("LinkedList remove Method 耗时:"+(System.currentTimeMillis()-start));
}
public static void testLinkedListGetMethod(){
long start = System.currentTimeMillis();
for(int i=0;i<count;i++){
link.get(i);
}
System.out.println("LinkedList get Method 耗时:"+(System.currentTimeMillis()-start));
}
public static void testLinkedListIteratorMethod(){
Iterator it = link.iterator();
long start = System.currentTimeMillis();
while(it.hasNext()){
it.next();
}
System.out.println("LinkedList iterator Method 耗时:"+(System.currentTimeMillis()-start));
}
public static void main(String[] args) {
testArrayListAddMethod();
testArrayListGetMethod();
testArrayListIteratorMethod();
testArrayListRemoveMethod();
testLinkedListAddMethod();
testLinkedListGetMethod();
testLinkedListIteratorMethod();
testLinkedListRemoveMethod();
System.out.println("array size:"+array.size());
System.out.println("link size:"+link.size());
}
}
分享到:
相关推荐
ArrayList与LinkedList性能比较在java中 ArrayList和LinkedList是java中两个常用的实现List接口的类,它们之间的性能比较是一个非常重要的知识点。 首先,让我们来了解ArrayList和LinkedList的实现原理。ArrayList...
在Java编程语言中,ArrayList、...而Vector虽然提供了线程安全,但其性能通常低于ArrayList和LinkedList,更适合于多线程环境且对性能要求不那么敏感的应用。在实际开发中,选择哪种数据结构应根据具体需求来决定。
总之,理解ArrayList、LinkedList和Vector的内部工作原理和性能特征,可以帮助我们做出更明智的选择,优化代码性能,并避免不必要的资源消耗。在深入源码阅读和实践过程中,我们可以更深入地理解这些类的设计思想和...
总的来说,理解ArrayList和LinkedList的基本特性和应用场景,以及如何处理与之相关的安全性问题,是Java程序员必备的知识。通过深入学习和实践,可以更好地利用这些数据结构提升程序效率和质量。
05丨ArrayList还是LinkedList?使用不当性能差千倍.html
ArrayList、LinkedList、Vector 是 Java 中常用的数据结构实现类,它们都实现了 List 接口,但它们在存储方式、性能、线程安全性等方面有着不同特点。 首先,ArrayList 和 Vector 都是采用数组方式存储数据的,这种...
在 Java 中,ArrayList 和 LinkedList 是两种常用的集合类,它们各自具有不同的特性和适用场景,主要体现在数据结构、访问效率和操作性能上。 1. 数据结构: - ArrayList 实现了一个动态数组,它内部是一个 Object...
### 关于ArrayList与LinkedList的区别 在Java编程语言中,`ArrayList`与`LinkedList`都是`List`接口的具体实现类,用于存储元素集合。虽然它们都实现了同样的接口并且提供了相同的基本功能,但在内部实现机制、性能...
第二个代码示例则比较了从ArrayList和LinkedList中读取100000个元素的时间。在ArrayList中,由于元素存储连续,直接按索引访问几乎瞬间完成。然而,当使用LinkedList时,由于需要从头开始遍历链表,耗时显著增加。 ...
- **实现原理**:Vector与ArrayList类似,也是基于动态数组,但它是线程安全的。 - **线程安全**:每个公共方法都在内部进行了同步,这意味着在多线程环境下无需额外的同步代码。 - **效率**:由于线程安全的实现...
本文件"arraylist-linkedlist-test.zip"主要探讨了在执行添加和删除元素操作时,LinkedList相对于ArrayList的性能优势。 ArrayList是基于动态数组的数据结构,它在内存中连续存储元素。由于数组的特性,访问任意...
《ArrayList与LinkedList源码解析》 在Java编程中,ArrayList和LinkedList是两种常见的动态数组,它们都是Java集合框架的一部分,提供了对元素存储和操作的功能。本篇将深入探讨ArrayList和LinkedList的内部实现...
在Java编程语言中,ArrayList和LinkedList都是集合框架中两种重要的列表实现,它们分别基于不同的数据结构,具有不同的特性和性能特点。以下是对这两个类的详细分析: 1. 数据结构: - ArrayList是基于动态数组的...
### ArrayList、Vector、LinkedList 的区别与用法详解 在Java编程中,选择合适的数据结构对于程序的性能至关重要。本文将深入探讨ArrayList、Vector和LinkedList三种集合类的特点与使用场景,帮助开发者更好地理解...
ArrayList和LinkedList的比较与实现原理 在 Java 中,ArrayList 和 LinkedList 是两个常用的集合类,它们都是 List 接口的实现类,但它们之间有着鲜明的区别。今天,我们将深入探讨这两个集合类的实现原理和比较。 ...
Java 中 ArrayList 与 LinkedList 对比详情 在 Java 中,ArrayList 和 LinkedList 是两个常用的集合实现方式,它们都实现了 Collection 接口,但是它们之间存在着一些关键的差异。本文将通过实例对比 Java 中 ...
- **插入与删除**:LinkedList在插入和删除元素时具有较高的效率,特别是对于头部和尾部的操作,因为不需要移动其他元素。但在进行随机访问时,由于需要遍历链表,其效率低于ArrayList和Vector。 - **适用场景**:...
Java编程语言中的`Map`, `List`, `ArrayList` 和 `LinkedList` 是四个核心的数据结构,它们在实际开发中被广泛使用。了解它们的源码对于深入理解Java集合框架的内部工作原理至关重要,尤其是对初学者而言,这有助于...
【Java基础——List接口详解(ArrayList、LinkedList、匿名类)】 在Java编程中,List接口是集合框架的重要组成部分,提供了有序存储元素的功能。ArrayList和LinkedList是List接口的两种主要实现,它们各有优缺点,...