Performance between Sets and List

The sets and list are offen used to store the processing data, but which one is more efficient and performance better, here below is the example for testing which one is better.


Example:


package com.basic.set;


import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;


public class SetListPerformanceTest {


private static final int N = 50000;

public static void main(String[] args) {
//Add numbers 0,1,2,3....N-1 to the array list
List<Integer> list = new ArrayList<Integer>();
for (int i=0; i<N; i++){
list.add(i);

}

//shuffle: randomly make the list to be disorganize
Collections.shuffle(list);//shuffle the array list

//create a hash set, and test its performance
Collection<Integer> set1 = new HashSet<Integer>();
System.out.println("Member test time for hash set is " + getTestTime(set1) + "milliseconds");

System.out.println("Remove element time for hash set is " + getRemoveTime(set1) + "milliseconds");

//create a linked hase set, and test its performance
Collection<Integer> set2 = new LinkedHashSet<Integer>(list);
System.out.println("Member test time for linked hash set is " + getTestTime(set2) + "millseconds");
System.out.println("Remove element time for linked hash set is " + getRemoveTime(set2) + "milliseconds");

//create a linked hase set, and test its performance
Collection<Integer> set3 = new LinkedHashSet<Integer>(list);
System.out.println("Member test time for tree set is " + getTestTime(set3) + "millseconds");
System.out.println("Remove element time for tree set is " + getRemoveTime(set3) + "milliseconds");

//create an array list , and test its performance
Collection<Integer> list1 = new ArrayList<Integer>(list);
System.out.println("Member test time for array list is " + getTestTime(list1) + "millseconds");
System.out.println("Remove element time for array list is " + getRemoveTime(list1) + "milliseconds");

//create an array list , and test its performance
Collection<Integer> list2 = new LinkedList<Integer>(list);
System.out.println("Member test time for linked list is " + getTestTime(list2) + "millseconds");
System.out.println("Remove element time for linked list is " + getRemoveTime(list2) + "milliseconds");



}


private static long getRemoveTime(Collection<Integer> c) {

long startTime =  System.currentTimeMillis();

for (int i=0; i < N; i++)
c.remove(i);
return System.currentTimeMillis() - startTime ;
}


private static long getTestTime(Collection<Integer> c) {

long startTime =  System.currentTimeMillis();
for (int i=0; i < N; i++) {
c.contains(Math.random() * 2 * N);
}
return System.currentTimeMillis() - startTime;
}
}


Output Result:


Member test time for hash set is 16milliseconds
Remove element time for hash set is 8milliseconds
Member test time for linked hash set is 12millseconds
Remove element time for linked hash set is 13milliseconds
Member test time for tree set is 8millseconds
Remove element time for tree set is 9milliseconds
Member test time for array list is 29096millseconds
Remove element time for array list is 9513milliseconds
Member test time for linked list is 34799millseconds
Remove element time for linked list is 7601milliseconds

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值