论坛首页 Java企业应用论坛

hashmap和treemap性能比较

浏览 9650 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (1)
作者 正文
   发表时间:2012-04-07  
周末在家测试了hashmap和treemap的性能,分别产生指定数目的随机数,然后依次放到不同的容器中,记录一下放之前和放之后的时间。然后再根据产生的随机数,在容器中中读一把,记录一下读之前和读之后的时间。
hashmap的测试代码如下:
List<Integer> keys = new ArrayList<Integer>(S_Len);
		HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
		{
			Random random = new Random();
			for(int i=0;i<S_Len;i++){
				int key = random.nextInt();
				keys.add(key);
				
			}
		}
		{
			
			Date date = new Date();
			for(Integer key:keys){
				
				map.put(key, key);
			}
			System.out.println("put time=" + (new Date().getTime()-date.getTime()));
		}
		
		{
			
			Date date = new Date();
			for(Integer key:keys){
				
				map.get(key);
			}
			System.out.println("get time=" + (new Date().getTime()-date.getTime()));
		}

treemap的代码很类似,只有第二行HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();变成了TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();测试出来的结果应该是hashmap完胜treemap。
hashmap的结果



treemap的结果


  • 大小: 16.1 KB
  • 大小: 17 KB
   发表时间:2012-04-08  
很正常,理论上红黑树的时间复杂度为O(logN),散列的时间复杂度为O(1)
0 请登录后投票
   发表时间:2012-04-08  
多线程下的性能测试更有说服力,楼上说的时间复杂度正解
0 请登录后投票
   发表时间:2012-04-08  
kfyfly 写道
多线程下的性能测试更有说服力,楼上说的时间复杂度正解


散列表和红黑树这2个就不是一路的,根本没可比性。。。又都是非线程安全的就更加没可比性了
0 请登录后投票
   发表时间:2012-04-09  
543089122 写道
kfyfly 写道
多线程下的性能测试更有说服力,楼上说的时间复杂度正解


散列表和红黑树这2个就不是一路的,根本没可比性。。。又都是非线程安全的就更加没可比性了

所 言 极 是
0 请登录后投票
   发表时间:2012-04-09  
有时候是根据功能来选择使用哪个集合的,不只是单看性能的
0 请登录后投票
   发表时间:2012-04-09  
treeMap 可以排序。HashMap不可以排序。
0 请登录后投票
   发表时间:2012-04-09  
freish 写道
543089122 写道
kfyfly 写道
多线程下的性能测试更有说服力,楼上说的时间复杂度正解


散列表和红黑树这2个就不是一路的,根本没可比性。。。又都是非线程安全的就更加没可比性了

所 言 极 是



对,从理论的角度就能看出差距了,根本就没有比的必要。
0 请登录后投票
   发表时间:2012-04-09  
正确,想想也知道。好比拿100件衣服乱发给100人跟,按号码发给100人一样
0 请登录后投票
   发表时间:2012-04-09  
这个。。比较性能干啥,比较下功能还可以
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics