日常开发中会经常用到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个键值,自己多次运行每种取值方法,每次运行的花费的时间都不一样,所以在实际运用中根据具体情况和值的多少来处理把!
分享到:
相关推荐
本文将重点分析这三种数据结构之间的区别,特别是针对`HashTable`不支持空键值对而`HashMap`支持这一点进行深入探讨。 #### 二、HashTable `HashTable`是基于哈希表实现的一个线程安全的`Map`容器,它不允许`key`...
HashMap使用数组和链表的组合来实现,采用了一种称为哈希表的数据结构。数组的存储区间是连续的,这使得它具有很高的寻址效率,但同时插入和删除操作的效率较低。链表则相反,存储区间离散,便于插入和删除,但寻址...
### EL表达式在前后台的取值赋值问题详解 #### 一、EL表达式概述 EL(Expression Language)表达式是一种简洁的方式,用于获取JavaBean属性或执行简单运算。在JSP页面中,它提供了从请求作用域、会话作用域、应用...
#### 四、`HashMap`导致CPU 100%的情况 **场景:** 在多线程环境下,`HashMap`在并发扩容时可能会导致CPU使用率激增至100%。这种情况通常发生在多个线程同时尝试对同一个`HashMap`进行扩容操作时,导致死锁或循环...
本文主要介绍了三种解决这个问题的方法:双循环、空间换时间和异或操作。 首先,双循环是最直观但效率较低的方法。对于一个包含n个元素的数组,这种方法的时间复杂度是O(n^2),因为我们需要遍历数组中的每一对元素...
在Spring MVC框架中,Model和...通过合理使用这些技术,可以有效地实现控制器和视图之间的数据交互,提高应用程序的开发效率。在实际项目中,根据需求选择合适的方式传递数据,能更好地优化代码结构和提升用户体验。
Map 接口定义了四种类型的方法,包括 `equals()`、`hashCode()`、`put()`、`remove()` 等。这些方法是所有 Map 实现类的基础,任何 Map 实现类都需要实现这些方法。 Map 的优化 Map 集合的优化是非常重要的,例如...
Java知识点详解 ...每种类型都有其特定的取值范围和内存占用。 理解并熟练运用这些Java知识点,不仅可以提升开发效率,还能有效地排查和解决开发中遇到的问题。不断学习和实践,才能在Java开发领域游刃有余。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。它基于JavaScript的一个子集,格式简洁且易于读写,同时也易于机器解析和生成。在Java中,将JSON字符串转换为...
- **死循环问题**:HashMap在并发环境下修改可能导致迭代失败,需使用ConcurrentHashMap。 - **HashMap put流程**:插入新键值对,考虑扩容、冲突解决等。 10. **其他知识点**: - **Integer缓存池**:-128到127...
- `StringBuilder`: 类似于`StringBuffer`,但不支持线程安全,因此在单线程环境中效率更高。 ### 七、集合类 - **Collection**接口:是所有集合类的根接口。 - `List`接口:有序且可重复的集合。 - `ArrayList`...
3. **缓冲流**:如`BufferedReader`和`BufferedWriter`,增加了缓存功能,提高了读写效率。 #### 六、数据库应用 在Java中,掌握如何连接和操作数据库是一项重要的技能。主要包括使用JDBC进行数据库连接和操作、...
在Java编程中,`Hashtable` 是一个古老的容器类,它继承自 `Dictionary` 类,并...对于线程安全的需求,可以考虑使用 `ConcurrentHashMap` 替代 `Hashtable`,因为 `Hashtable` 的同步机制在多线程环境下可能效率较低。
传统的IO基于字节流和字符流,以同步阻塞的方式处理数据,而NIO(New IO)引入了非阻塞IO和选择器,提高了I/O操作的效率。 八、多线程 8. 什么是Java多线程,如何创建线程? Java多线程允许程序同时执行多个任务。...
13. **JSP九大隐视对象中四个作用域**:page, request, session, application,分别表示页面、请求、会话和全局应用范围,作用范围依次增大,生命周期也相应延长。 14. **List, Set, Collection, Collections**:...
Java 中提供了四种访问级别: - `public`: 对所有类公开。 - `private`: 仅对当前类可见。 - `protected`: 对同一包内的类以及子类公开。 - `default` (无修饰符): 对同一包内的类可见。 ### 5. 异常处理 - 异常...
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基础的重要组成部分。 集合是Java编程中常用的数据结构,包括List(如ArrayList、LinkedList)、Set(如...