通过Map类的get(key)方法获取value时,会进行两次hashCode的计算,消耗CPU资源;而使用entrySet的方式,map对象会直接返回其保存key-value的原始数据结构对象,遍历过程无需进行错误代码中耗费时间的hashCode计算; 这在大数据量下,体现的尤为明显。
package com.bb.eoa.extend.yssp.controller;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class T {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("str1", "str11");
map.put("str2", "str22");
map.put("str3", "str33");
/**
* 第一种方式:通过Map类的get(key)方法获取value
*/
for (Iterator<String> ite = map.keySet().iterator(); ite.hasNext();) { // foreach输出
Object key = ite.next();
Object value = map.get(key);
System.out.print(key);
System.out.print("-->");
System.out.print(value);
System.out.println();
}
System.out.println("-----------");
Set s = map.keySet(); // 普通方式输出
Iterator i = s.iterator();
while (i.hasNext()) {
Object key = i.next();
Object value = map.get(key);
System.out.print(key);
System.out.print("-->");
System.out.print(value);
System.out.println();
}
System.out.println("---------");
/**
* 第二种方式:利用entrySet方式,map对象会直接返回其保存key-value的原始数据结构对象
*/
Set entry = map.entrySet(); //普通方式输出
Iterator ite = entry.iterator();
while (ite.hasNext()) {
Map.Entry m = (Map.Entry) ite.next(); // Set中的每一个元素都是Map.Entry
System.out.print(m.getKey() + "-->");
System.out.println(m.getValue());
}
System.out.println("-----------");
for (Iterator it = map.entrySet().iterator(); it.hasNext();) { // foreach输出
Map.Entry e = (Map.Entry) it.next();
System.out.print(e.getKey()+"-->");
System.out.print(e.getValue());
System.out.println();
}
}
}
分享到:
相关推荐
HashMap是一种基于哈希表的Map接口实现,主要用于存储键值对。它允许空值和空键。其主要特点是通过键的哈希值存储值,并提供了添加、获取和操作存储值的方法。 HashMap的底层数据结构是由数组和链表组成的。数组是...
顺序表、链表、栈、队列、树、...Python中的list和tuple两种类型采用了顺序表的实现技术 链表 单向链表 双向链表 单向循环链表 栈 队列 FIFO队列 LIFO队列 优先队列(Priority Queue) 双端队列(double-ended queue)
掌握上述的每个方法的应用(采用String,Integer等JDK已提供的引用数据类型),重点掌握数据的存储及遍历的方式(两种遍历方式都要掌握) 四、深入分析HashMap的存储 深入掌握HashMap的关键技术点,如何区分是否重复...
两种方式的卖票线程 1) 继承 Thread 类,数据无法共享 14 2) 实现 Runnable 接口,数据可以共享(推荐) 15 2.每两秒钟生成一个验证码 17 2. 抽奖小程序 21 5工具类 31 4.1 如何将一个java.util.Date转成一个java....
不然就按照链表的方式遍历匹配返回值。 从这两个核心方法(get/put)可以看出 1.8 中对大链表做了优化,修改为红黑树之后查询效率直接提高到了 O(logn)。 但是 HashMap 原有的问题也都存在,比如在并发场景下使用时...
Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来...
有两种方式 -> 第一种是反转字符串,另一种是反转并检查(接受) 13 -罗马到整数 - 接受 20 - 有效括号 - 接受 101 - 对称树 102 - 二叉树级顺序遍历 342 -四的幂(检查提醒方法-log(n),对数解(复杂性-Java的...
求众数,两种实现方式: 1 hashmap 2 先排序,再取下标为len/2的值 分享:spark shuffle 算法: 朴素贝叶斯 决策树 第四周打卡: leetcode: 缺失的最小正整数:部分数据比较并替换,排好序后再依次遍历。 share: ...
target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素 本题具有多种解法 简单一点的可以直接暴力遍历求解...
Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来...
具体方法在第一种方案中描述。 标题 解决方案 困难 基本理念 简单的 1. 两点2. 哈希表 简单的 1. Python3中的mod和floor划分 中等的 用贪婪的思维解码映射 简单的 字符串遍历 简单的 堆 中等的 递归 简单的 双指针 ...
47. 两种跳转方式分别是什么?有什么区别? 22 48. get和post的区别? 22 49. JDK,JRE,JVM的区别? 22 50. Java中常见类,方法,接口 23 51. 多线程 23 51.1. 线程的基本概念 23 51.2. Java中的线程有四种状态 23 51.3...
除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有什么区别? 38.列举三种以上垃圾回收算法,并比较其优缺点? 39....
17种排列组合46排序组合48排序组合78排序组合22递归创建括号回溯39个向量递归组合回溯120个向量递归组合回溯437相互调用转换度高637 BFS试图估计已经有维二维结果存储94 144 145递归实现深度遍历以及使用栈实现深度...
Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常...
Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来...
Leetcode的ac是什么意思 LeetCode解题 第一题:Two Sum 这题是给你一个整数的数组,然后给你一个...第一钟解题思路就是两个for循环来遍历出每一种字串,然后将这个字串放在一个方法里来判断这个字串是否存在重复,不重
2. 两个实现类HashSet(LinkHashSet)和TreeSet,TreeSet有排序功能(Set set=new TreeSet();set.add(new Integer(8)); set.add(new Integer(4)); set.add(new Integer(7));)输出后的结果是:4 7 8 Eg: package test...
学生提问:使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更大? 159 5.9 初始化块 159 5.9.1 使用初始化块 160 5.9.2 初始化块和构造器 161 5.9.3 静态初始化块 162 ...