`

HashMap四种取值的效率问题

阅读更多
日常开发中会经常用到map来存取值,但是对于HashMap中的四种取值方式效率比对如下:

  1、我先在想map中存放了20000个键值对
   Map<String,String> map = new HashMap<>();
        int total=2000000;
        for(int i=0;i< total;i++){
            map.put(i+"",(i+1)+"");
        }


   2、四种取值方式比较
      1、
    
   Set<String> set = map.keySet();
        for (String key : set) {
            System.out.println(key + map.get(key));
        }


       2、
       Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, String> entry = it.next();
            System.out.println("key=" + entry.getKey() + "value=" + entry.getValue());
        }


        3、
           for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println("key=" + entry.getKey() + "value=" + entry.getValue());
        }


        4、
     
     for (String v : map.values()) {
            System.out.println(v);
        }


   比对结果:
      20000个键值:1、200 2、240 3、268  4、172
      200000个键值:1、786 2、568 3、1304 41137
      通过测试在map中存放20000个键值和200000个键值,自己多次运行每种取值方法,每次运行的花费的时间都不一样,所以在实际运用中根据具体情况和值的多少来处理把!
分享到:
评论

相关推荐

    HashMap与HashTable和HashSet的区别

    本文将重点分析这三种数据结构之间的区别,特别是针对`HashTable`不支持空键值对而`HashMap`支持这一点进行深入探讨。 #### 二、HashTable `HashTable`是基于哈希表实现的一个线程安全的`Map`容器,它不允许`key`...

    HashMap 的底层原理Java系列2021.pdf

    HashMap使用数组和链表的组合来实现,采用了一种称为哈希表的数据结构。数组的存储区间是连续的,这使得它具有很高的寻址效率,但同时插入和删除操作的效率较低。链表则相反,存储区间离散,便于插入和删除,但寻址...

    EL表达式在前后台的取值赋值问题

    ### EL表达式在前后台的取值赋值问题详解 #### 一、EL表达式概述 EL(Expression Language)表达式是一种简洁的方式,用于获取JavaBean属性或执行简单运算。在JSP页面中,它提供了从请求作用域、会话作用域、应用...

    Java面试题-哈希.docx

    #### 四、`HashMap`导致CPU 100%的情况 **场景:** 在多线程环境下,`HashMap`在并发扩容时可能会导致CPU使用率激增至100%。这种情况通常发生在多个线程同时尝试对同一个`HashMap`进行扩容操作时,导致死锁或循环...

    65-数组中出现一次数字的三种解法1

    本文主要介绍了三种解决这个问题的方法:双循环、空间换时间和异或操作。 首先,双循环是最直观但效率较低的方法。对于一个包含n个元素的数组,这种方法的时间复杂度是O(n^2),因为我们需要遍历数组中的每一对元素...

    SpringMVC中Model和ModelAndView的EL表达式取值方法

    在Spring MVC框架中,Model和...通过合理使用这些技术,可以有效地实现控制器和视图之间的数据交互,提高应用程序的开发效率。在实际项目中,根据需求选择合适的方式传递数据,能更好地优化代码结构和提升用户体验。

    重要知识java中map集合的用法.pdf

    Map 接口定义了四种类型的方法,包括 `equals()`、`hashCode()`、`put()`、`remove()` 等。这些方法是所有 Map 实现类的基础,任何 Map 实现类都需要实现这些方法。 Map 的优化 Map 集合的优化是非常重要的,例如...

    java知识点

    Java知识点详解 ...每种类型都有其特定的取值范围和内存占用。 理解并熟练运用这些Java知识点,不仅可以提升开发效率,还能有效地排查和解决开发中遇到的问题。不断学习和实践,才能在Java开发领域游刃有余。

    json字符串转成 Map/List

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。它基于JavaScript的一个子集,格式简洁且易于读写,同时也易于机器解析和生成。在Java中,将JSON字符串转换为...

    面试题 Java 基础总结了经常会被面试官问的问题

    - **死循环问题**:HashMap在并发环境下修改可能导致迭代失败,需使用ConcurrentHashMap。 - **HashMap put流程**:插入新键值对,考虑扩容、冲突解决等。 10. **其他知识点**: - **Integer缓存池**:-128到127...

    [2022JAVA经典基础面试题及答案]java基础面试题2022.docx

    - `StringBuilder`: 类似于`StringBuffer`,但不支持线程安全,因此在单线程环境中效率更高。 ### 七、集合类 - **Collection**接口:是所有集合类的根接口。 - `List`接口:有序且可重复的集合。 - `ArrayList`...

    Java八股文是指程序员在面试过程中经常被问到的具有固定化和格式化答案的问题集合

    3. **缓冲流**:如`BufferedReader`和`BufferedWriter`,增加了缓存功能,提高了读写效率。 #### 六、数据库应用 在Java中,掌握如何连接和操作数据库是一项重要的技能。主要包括使用JDBC进行数据库连接和操作、...

    java 中遍历取值异常(Hashtable Enumerator)解决办法

    在Java编程中,`Hashtable` 是一个古老的容器类,它继承自 `Dictionary` 类,并...对于线程安全的需求,可以考虑使用 `ConcurrentHashMap` 替代 `Hashtable`,因为 `Hashtable` 的同步机制在多线程环境下可能效率较低。

    java面试题 适合应届生的很好的面试题

    传统的IO基于字节流和字符流,以同步阻塞的方式处理数据,而NIO(New IO)引入了非阻塞IO和选择器,提高了I/O操作的效率。 八、多线程 8. 什么是Java多线程,如何创建线程? Java多线程允许程序同时执行多个任务。...

    java综合知识

    13. **JSP九大隐视对象中四个作用域**:page, request, session, application,分别表示页面、请求、会话和全局应用范围,作用范围依次增大,生命周期也相应延长。 14. **List, Set, Collection, Collections**:...

    java知识点回顾

    Java 中提供了四种访问级别: - `public`: 对所有类公开。 - `private`: 仅对当前类可见。 - `protected`: 对同一包内的类以及子类公开。 - `default` (无修饰符): 对同一包内的类可见。 ### 5. 异常处理 - 异常...

    JAVA高级程序员考试题.pdf

    17. **HashMap和Hashtable**:两者都继承自Map接口,HashMap通常比Hashtable效率高,但HashMap没有`contains()`方法,而Hashtable的contains()方法在Java 1.2之后已被`containsValue()`取代,选项A和B正确,C和D错误...

    静态变量的导入以及集合的运用

    主要包括`List`、`Set`和`Map`三种接口,以及它们的具体实现类,如`ArrayList`、`HashSet`和`HashMap`等。 ### List 接口及其实现 `List`接口是最常用的一种集合类型,它允许元素按照插入顺序排列,并且可以包含...

    java面试宝典2019

    理解它们的存储方式、取值范围以及在运算中的特性至关重要。此外,面向对象的特性如封装、继承、多态也是Java基础的重要组成部分。 集合是Java编程中常用的数据结构,包括List(如ArrayList、LinkedList)、Set(如...

Global site tag (gtag.js) - Google Analytics