LinkedList ArrayList测试

下面测试他们的性能 如何

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

public class ListTest {
	private static final int REPS =100;

	private abstract static class Tester {
		String name ;
		int size ;
		Tester(String name , int size ){
			this.name= name ;
			this.size = size ;
		}

		abstract void test(List a ) ;
	}
	//测试的一个数组
	private static Tester [] tests ={
		new Tester("get" , 300) {

			void test(List a) {
				for (int i =0; i<REPS ; i++){
					for (int j =0; j< a.size(); j++){
						a.get(j) ;
					}
				}
			}
		},
		new Tester("iteration",300) {
			void test(List a) {
				for (int i =0; i<REPS ; i++){
					Iterator it = a.iterator() ;
					while (it.hasNext()) {
						it.next() ;
					}
				}
			}
		},
		new Tester("insert" , 1000) {

			void test(List a) {
				int half = a.size()/2;
				String s = "test" ;
				ListIterator it = a.listIterator() ;
				for (int i =0; i<size*10; i++){
					it.add(s) ;
				}
			}
		},
		new Tester("remove", 5000) {

			void test(List a) {
				ListIterator it = a.listIterator(3) ;
				while (it.hasNext()) {
					it.next() ;
					it.remove() ;
				}
			}
		},
	} ;

	public static void test (List a ){
		System.out.println("testing"+ a.getClass().getName()) ;
		for (int i =0;i< tests.length; i++){
			//collections中的fill方法:使用指定元素替换指定列表中的所有元素
			Collections.fill(a, tests[i]) ;
			System.out.print(tests[i].name) ;
			long t1 = System.currentTimeMillis() ;
			tests[i].test(a);
			long t2 = System.currentTimeMillis() ;
			System.out.println(":"+ (t2-t1));
		}
	}

	public static void main (String [] args ){
		test(new ArrayList ()) ;
		test(new LinkedList()) ;
	}

}

  

时间: 2024-10-07 06:12:30

LinkedList ArrayList测试的相关文章

LinkedList ArrayList测试2

下面测试他们的性能 如何 import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; public class ListTest { private static final int REPS =100; private a

Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和性能分析)

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和

(转)Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理.解决办法) Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列06之 Vector详细介绍(源码解析)和使用示例 Java 集合系列07之 Stack详细

【转】Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理.解决办法) Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列06之 Vector详细介绍(源码解析)和使用示例 Java 集合系列07之 Stack详细

Java _ JDK _ Arrays, LinkedList, ArrayList, Vector 及Stack

(最近在看JDK源码,只是拿着它的继承图在看,但很多东西不记录仍然印象不深,所以开始记录JDK阅读系列.) (一)Arrays Arrays比较特殊,直接继承自Arrays ->List(Interface) ->Collection(Interface). (Maybe因为Java中的数组本身就比较特殊?) 包含一些用来操作数组的一些方法,比如排序,搜索,复制,填充,toString方法等: 搜索使用二分搜索: 排序:使用DualPivotQuickSort中的排序算法,基本是改进版的快速排

Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分

第1部分 List概括 先回顾一下List的框架图 (01) List 是一个接口,它继承于Collection的接口.它代表着有序的队列. (02) AbstractList 是一个抽象类,它继承于AbstractCollection.AbstractList实现List接口中除size().get(int location)之外的函数. (03) AbstractSequentialList 是一个抽象类,它继承于AbstractList.AbstractSequentialList 实现了

LinkedList/ArrayList

一.LinkedList双向链表:堆栈,队列,双端队列.public class LinkedList<E>    extends AbstractSequentialList<E>    implements List<E>, Deque<E>, Cloneable, java.io.Serializable

ArrayList、LinkedList、 Vector、Map 用法比较

ArrayList和Vector是采用数组方式存储数据,此数组元素总数大于实际存储的数据个数以便增加和插入元素,二者都允许直接序号索引元素,但是插入数据要移动数组元素等内存操作,所以它们索引数据快.插入数据慢. ArrayList数组存储方式: [java] view plaincopyprint? private transient Object[] elementData; public ArrayList(int initialCapacity) { super(); if (initia

Java ArrayList、Vector和LinkedList等的差别与用法(转)

Java ArrayList.Vector和LinkedList等的差别与用法(转) ArrayList 和Vector是采取数组体式格式存储数据,此数组元素数大于实际存储的数据以便增长和插入元素,都容许直接序号索引元素,然则插入数据要设计到数组元素移动等内存操纵,所以索引数据快插入数据慢,Vector因为应用了synchronized办法(线程安然)所以机能上比ArrayList要差,LinkedList应用双向链表实现存储,按序号索引数据须要进行向前或向后遍历,然则插入数据时只须要记录本项的