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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值