`
geeksun
  • 浏览: 965299 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HashMap性能测试

阅读更多

       HashMap是常用的容器类(集合类),遍历HashMap中的Key值,有两个方法实现:

1. 

Map map = new HashMap();
     for(Map.entry en:map.entrySet()){
         en.getKey();
}

 2.

Iterator it = map.keySet.iterator();
while(it.hasNext()){
     it.next();
}

 有的文章中说用entrySet()比keySet()的速度快,我也测试了一下,测试代码如下:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * Description HashMap性能测试
 * @author Administrator
 * 2012-9-22
 */
public class HashMapDemo {

    private static Map<String, Integer> map = new HashMap<String, Integer>();

    /**
     *  map.entrySet()
     */
    public static void testEntry() {
        map.put("a", 3);
        map.put("b", 2);
        map.put("c", 1);
        long start = System.currentTimeMillis();
        for (int i = 0; i < 200000; i++) {
            for (Map.Entry en : map.entrySet()) {
                String s = en.getKey() + "";
            }
        }
        long end = System.currentTimeMillis();
        System.out.println(end - start);
    }

    /**
     *  map.keySet()
     */
    public static void testKeySet() {
        map.put("a", 3);
        map.put("b", 2);
        map.put("c", 1);
        long start = System.currentTimeMillis();
        for (int i = 0; i < 200000; i++) {
            Iterator it = map.keySet().iterator();
            while (it.hasNext()) {
                String s = it.next() + "";
            }
        }
        long end = System.currentTimeMillis();
        System.out.println(end - start);
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        //testEntry();
        testKeySet();
    } 
}

测试环境:eclipse3.3+jdk6

 测试结果,testEntry()的耗时为235,141,125,110,稳定值是125ms,testKeySet的耗时为141,125,156,109,稳定值是109ms,testKeySet()和testEntry()耗时差异不大, keySet() 比entrySet()反而略快一些。

分享到:
评论

相关推荐

    hashmapTest:来自java-performance.info的HashMap性能测试

    标题中的“hashmapTest”指的是一个关于Java中HashMap性能测试的项目或实验,源自java-performance.info这个网站。这个测试可能是为了分析和比较不同情况下HashMap的性能表现,包括插入、查找、删除等操作的速度以及...

    Java里多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)

    在Java编程中,Map接口是用于存储键值对的数据结构,而Java提供了多种Map的实现,包括TreeMap、HashMap和ConcurrentSkipListMap。...在实际使用中,应结合性能测试和业务需求来确定最适合的Map类型。

    java集合类类性能测试源代码

    5. **HashSet vs HashMap性能测试** - 如果只关心元素是否存在于集合中,HashSet的查找速度快于HashSet。 - 当需要存储键值对时,HashMap是更好的选择,因为它同时提供了键和值的存取。 6. **HashSet vs TreeSet...

    hashtable和hashmap的区别

    - **HashMap**: 非同步设计使得其在单线程环境下的性能优于`Hashtable`。然而,在多线程环境下,可以通过`Collections.synchronizeMap()`方法将`HashMap`转换成线程安全的版本。此外,从Java 5开始,推荐使用`...

    Java HashMap三种循环遍历方式及其性能对比实例分析

    每种遍历方式都有其特点和优缺势,本文将通过实例分析和性能测试来比较这三种遍历方式的差异。 一、for each map.entrySet()遍历方式 for each map.entrySet()是其中一种遍历方式,其实现代码如下: ```java Map,...

    学习笔记:三数组实现的HashMap

    在Java编程语言中,HashMap是一种常用的集合类,用于存储键值对数据。它提供O(1)的平均时间复杂度来插入、删除和查找元素,这得益于其内部的...在实际项目中,开发者应根据需求和性能测试结果选择最合适的HashMap实现。

    如何得到hashmap的索引

    ### 如何得到HashMap的索引 在Java编程中,`HashMap`是一种常见的数据结构,它提供了基于键值对(Key-Value Pair)的数据存储方式。...此外,理解`HashMap`的工作原理有助于更好地选择合适的方法来优化代码性能。

    treemap treeset hashset hashmap 简要介绍

    在代码示例中,可以看到`SmileCollections`类分别测试了`TreeSet`和`HashMap`的用法。对于`TreeSet`,虽然尝试添加了多个相同的`Student`对象,但由于`TreeSet`不允许重复元素,最终集合中只会保留一个元素。对于`...

    前端开源库-hashmap

    在压缩包`hashmap-master`中,可能包含的文件有源代码文件(如`index.js`)、测试用例(`test`目录)、文档(`docs`目录)、示例(`examples`目录)和构建脚本(`build`目录)。通过阅读这些文件,可以详细了解库的...

    Go-rhh一个简单而高效的Go的hashmap包

    2. 哈希函数的均匀性:虽然xxhash已经很优秀,但特定的键值组合仍可能出现聚集现象,需要关注并测试哈希表的性能。 3. 键值对的比较:确保键类型适配Go的平等比较规则,因为哈希表依赖于键的平等比较进行查找和更新...

    hashmap-thread-test:测试 Java HashMap 是否是线程安全的

    本项目“hashmap-thread-test”显然是为了测试和展示这一特性。 ### Java HashMap 的特性 1. **非线程安全**:`HashMap`不是线程安全的,因为它没有内置的同步机制来保护并发访问。当多个线程同时修改`HashMap`时...

    HashMap和链表的查找效率比较

    在Java编程语言中,`HashMap`和`List`(通常指的是`ArrayList`或`LinkedList`)是两种常用的数据结构,它们各自在不同的场景下有着不同的性能优势。本工程通过`VS2013`(Visual Studio 2013,虽然它主要用于C++开发...

    基于共享内存的hashmap

    而HashMap是数据结构中的一个重要部分,尤其在处理大量数据和需要快速查找的场景下,其性能优势显著。 根据压缩包子文件的文件名称列表“shmap-0.2.1”,我们可以推测这可能是该项目的一个版本号,比如表示这是...

    c语言 hashmap

    6. **测试与性能优化**:为了确保哈希表的稳定性和性能,需要进行充分的单元测试,覆盖各种操作和边界情况。此外,可以通过分析和调整哈希函数、优化冲突解决策略以及合理设置负载因子来提高性能。 通过以上步骤,...

    通过代码证明HashMap是线程不安全的(只用了一个Java文件)

    本篇文章将通过分析`HashMap`的源码以及编写一个简单的测试程序来证明这一点。 首先,我们要理解什么是线程安全。线程安全是指在多线程环境中,一个类或方法可以被多个线程同时访问而不会导致数据不一致或者意外的...

    Go-Go的hashmap使用加密随机种子散列提示开放寻址和罗宾汉哈希

    总之,Go的HashMap在安全性和性能方面进行了优化,采用了加密随机种子来增强安全性,通过散列提示、开放寻址和罗宾汉哈希来提高查找效率和降低冲突。这种先进的设计使得Go的HashMap成为一种高效且安全的数据结构,...

    阿里巴巴Java性能调优实战(2021-2022华山版)+Java架构核心宝典+性能优化手册100技巧.rar

    在完成项目后,就可以进行系统测试了,可以将以下性能指标,作为性能调优的标准,响应时间、吞吐量、计算机资源分配使用率、负载承受能力。 本教程结合 Java 应用开发的知识点,将内容分为七大模块,从上到下依次...

    HashMap的特点与使用方法详解.docx

    3. `modCount`:记录HashMap的修改次数,用于在迭代过程中检测并发修改,如果修改次数增加,迭代器会抛出`ConcurrentModificationException`。 4. `threshold`:HashMap能容纳的最大键值对数量,等于数组长度乘以...

    基于HashMap的学生管理系统

    《基于HashMap的学生管理系统详解》 ...理解并熟练应用HashMap,不仅能提升系统的性能,也是提升编程技能的重要步骤。在实际开发中,应结合具体需求,灵活运用各种数据结构和算法,以实现更高效、更可靠的应用程序。

Global site tag (gtag.js) - Google Analytics