[置顶] HashSet,LinkedHashSet,TreeSet,ArraysList,LinkedList性能

测试HashSet,LinkedHashSet,TreeSet,ArraysList,LinkedList五种添加元素和删除元素的时间。

测试CODE:

package list;
import java.util.*;


public class SetListPerformanceTest {

	/**
	 * 测试规则集和线性表的性能 : 
	 *   显示HashSet,LinkedHashSet,TreeSet,ArraysList,LinkedList
	 *   添加元素和删除元素的执行时间
	 * @author Sun1956
	 */
	public static void main(String[] args) {
		//测试HashSet
		Collection<Integer> set1 = new HashSet<Integer>();
		System.out.println("Time for hash set is " +
				getTestTime(set1,500000) + " ms");
		//LinkedHashSet
		Collection<Integer> set2 = new LinkedHashSet<Integer>();
		System.out.println("Time for linked hash set is " +
				getTestTime(set2, 500000) + "ms");
		//TreeSet
		Collection<Integer> set3 = new TreeSet<Integer>();
		System.out.println("Time for tree set is " + 
				getTestTime(set3,500000) + " ms");
		//ArrayList
		Collection<Integer> list1 = new ArrayList<Integer>();
		System.out.println("Time for array list is " +
				getTestTime(list1, 60000) + "ms");
		//LinkedList
		Collection<Integer> list2 = new LinkedList<Integer>();
		System.out.println("Time for linked list is " +
				getTestTime(list2, 60000) + "ms");
	}

	private static long getTestTime(Collection<Integer> c, int size) {
		long startTime = System.currentTimeMillis();
		
		//添加size个元素到ArrayList
		List<Integer> list = new ArrayList<Integer>();
		for (int i = 0; i < size; i++ )
			list.add(i);
		Collections.shuffle(list);   //打乱list中的元素顺序
		//将list中元素添加到容器中
		for (int elements: list)   //for-each语句
			c.add(elements);
		
		Collections.shuffle(list);
		for (int elements: list)
			c.remove(elements);
		
		long endTime = System.currentTimeMillis();
		return endTime - startTime;
	}

}

运行结果:

[置顶] HashSet,LinkedHashSet,TreeSet,ArraysList,LinkedList性能_第1张图片

从结果可知,规则集HashSet, LinkedHashSet, TreeSet,要比线性表ArrayList, LinkedList更高效。如果应用程序用规则集就足够

那就使用规则集。请注意,在线性表中除了结尾以外的任意位置上进行插入和删除操作时,LinkedList要比ArrayList更高效。

你可能感兴趣的:(linkedhashset,hashset,LinkedList,TreeSet,ArraysList)