除了增强的for循环使代码简洁大气,结构清晰外,我们还可以看到对Map键值不同的取值方式的效率介绍。
在这儿也是对增强for循环的相见恨晚啊!
之前的使用情况
package map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class EntryOfMap {
/*
* Set<Map.Entry<K,V>>entrySet() 返回此映射中包含的映射关系的 set 视图。
*
*/
public static void main(String[] args) {
String str[] = "java java platform is is is is perfect".split(" ");
statistics(str);
}
public static void statistics(String str[]) {
Map<String, Integer> m = new HashMap<String, Integer>();// 用HashMap,因为Hash的查找快
for (int i = 0; i < str.length; i++) {
Integer freq = m.get(str[i]);
m.put(str[i], freq == null ? 1 : freq + 1);
}
// 效率高
Set<Map.Entry<String, Integer>> set = m.entrySet();
Iterator<Map.Entry<String, Integer>> it = set.iterator();
// 下面这一句等价于上面的两句
// Iterator<Map.Entry<String, Integer>> it = m.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Integer> me = it.next();
System.out.println(me.getKey() + " " + me.getValue());// 直接获取键和值
}
// 效率低
Iterator<String> iter = m.keySet().iterator();
while (iter.hasNext()) {
String s = iter.next();
System.out.println(s + " " + m.get(s));
}
}
}
使用增强的for循环
package map;
import java.util.HashMap;
import java.util.Map;
public class EntryOfMap2{
/*
* 在EntryOfMap.java的基础上使用增强for循环对代码进行了优化
* 由于增强for循环的使用:这样的代码就非常的简洁了哦
*/
public static void main(String[] args) {
String str[] = "java java platform is is is is perfect".split(" ");
statistics(str);
}
public static void statistics(String str[]) {
Map<String, Integer> m = new HashMap<String, Integer>();// 用HashMap,因为Hash的查找快
for (int i = 0; i < str.length; i++) {
Integer freq = m.get(str[i]);
m.put(str[i], freq == null ? 1 : freq + 1);
}
// 用Map.Entry效率高
for (Map.Entry<String, Integer> me : m.entrySet())
System.out.println(me.getKey() + " " + me.getValue());
// 通过键来取值效率低
for (String s : m.keySet())
System.out.println(s + " " + m.get(s));
}
}
也就是比较这两段代码
1.
// 效率高
Set<Map.Entry<String, Integer>> set = m.entrySet();
Iterator<Map.Entry<String, Integer>> it = set.iterator();
// 下面这一句等价于上面的两句
// Iterator<Map.Entry<String, Integer>> it = m.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Integer> me = it.next();
System.out.println(me.getKey() + " " + me.getValue());// 直接获取键和值
}
// 效率低
Iterator<String> iter = m.keySet().iterator();
while (iter.hasNext()) {
String s = iter.next();
System.out.println(s + " " + m.get(s));
}
------------------这个比较式非常的明显啊---------------------------------2.
// 用Map.Entry效率高
for (Map.Entry<String, Integer> me : m.entrySet())
System.out.println(me.getKey() + " " + me.getValue());
// 通过键来取值效率低
for (String s : m.keySet())
System.out.println(s + " " + m.get(s));
.
分享到:
相关推荐
这里的“类型”是集合或数组中元素的类型,“变量”是在循环中使用的临时变量,用于存储每次迭代时当前元素的值,“集合或者数组”则是我们想要迭代的对象。 例如,如果我们有一个整数数组,我们可以使用增强型for...
然而,在MATLAB R2017b及以后的版本中,可以直接使用`for-each`循环处理向量或数组,因此我们可以进一步简化代码: ```matlab A = [1, 2, 3]; B = [4, 5, 6]; result = A .* B; % 直接使用向量乘法,无需循环 ``` ...
使用`for`循环遍历101到200之间所有的数字,并检查每个数字是否为素数。素数是指只能被1和它本身整除的大于1的自然数。 ```java for (int i = 101; i ; i++) { boolean isPrime = true; for (int j = 2; j (i); j...
Python中的for循环是一种非常基础且常用的控制流程结构,它用于遍历任何可迭代对象中的元素。在Python中,可迭代对象包括但不限于列表、元组、字符串、字典以及集合等。接下来,我们将深入探讨for循环的用法及其在...
该资源是一个名为"简洁大气灰色企业网站模板.rar"的压缩包,内含一套全面的企业网站设计模板。这个模板采用灰色为主色调,旨在营造出专业、稳重且不失时尚感的视觉效果,适合各类企业的在线形象展示。以下是这套模板...
在 C++ STL 中,for_each 算法是一种非常有用的算法,它可以对容器中的每个元素应用一个函数对象(仿函数)。在本文中,我们将详细介绍 for_each 返回值的使用方法和实现原理。 for_each 算法概述 for_each 算法是...
在压力容器设计与制造领域,应用Excel进行应力分析和结构优化是一个重要的研究方向。本文将基于弹性失效设计准则,对压力容器在最苛刻工况下壳体所受最大拉应力进行最小化的目标,详细探讨利用Excel软件在这一领域内...
在IT行业中,创建一个“简洁大气的灰色主题倒计时效果”是常见需求,尤其在网页设计、App界面或者活动预告等场景。这样的设计能够吸引用户的注意力,同时提供清晰的时间信息。下面我们将深入探讨实现这一效果所涉及...
在Java编程语言中,数组、for循环和do-while循环是基础且至关重要的概念,用于组织数据和控制程序流程。让我们深入探讨这些知识点,并通过实例代码来加深理解。 首先,数组是存储相同类型数据集合的容器。在Java中...
本项目“简洁大气的jQuery响应式全屏幻灯片特效代码”充分利用了jQuery的强大功能,提供了适应不同屏幕尺寸的全屏幻灯片解决方案,特别适合于现代网页设计,特别是那些注重移动友好性的网站。 首先,我们要理解...
简洁大气的设计风格体现在布局清晰、信息层次分明,避免过多的装饰元素,使用户能快速获取关键信息。 2. **网页结构**:一个优质的网站模板应具备良好的导航结构,方便用户快速找到所需信息。此模板可能包括首页、...
6. 遍历机制:熟悉foreach循环(增强for循环)和迭代器两种遍历容器的方法,并在练习题中使用这两种方法操作不同类型的容器。 7. 容器与多线程:学习在多线程环境中使用容器,了解线程安全问题,例如同步容器类(如...
通过集成在主流CAD软件中,如AutoCAD或SolidWorks,VCAD能够帮助工程师快速绘制容器的二维草图和三维模型,实现快速出图,同时支持参数化设计,使得设计修改变得更加灵活。 VCAD的核心功能包括: 1. 自动计算:...
在这个“简洁大气带进度条的URL跳转页面HTML源码”中,我们主要关注两个关键元素:页面的布局设计以及进度条功能的实现。 首先,页面布局通常涉及到HTML的容器元素,如`<div>`,用于组织内容。设计师可能会使用CSS...
4. **大图背景**:标题提到“大图”,这可能指的是模板中使用的大尺寸背景图片,用于营造视觉冲击力。CSS可以控制背景图片的大小、位置和重复,如`background-size`、`background-position`和`background-repeat`...
在编程语言中,循环是一种控制程序执行流程的关键结构,它允许我们重复执行一段代码,直到满足特定条件为止。其中,`for`循环是最常用的循环之一,尤其在处理数据遍历时。本节将深入探讨Python中的`for`循环及其相关...
在Python中,容器都支持迭代,即通过for循环遍历其元素。迭代器对象可以逐个返回容器中的元素,而不需要一次性加载所有数据,节省内存。生成器是一种特殊的迭代器,通过`yield`语句实现,可以延迟计算和记忆状态,常...
本篇文章将深入探讨Java中的List、Set和Map三种主要集合类型的遍历方法,以及如何使用增强for循环(也称为foreach循环)来简化代码。 首先,我们来看集合框架的基础。Java集合分为两大部分:Collection接口和Map...
JavaScript在模板中主要负责增强交互性和功能。可能包含了诸如下拉菜单、轮播图、表单验证等常见功能,提升了用户在网站上的操作便捷性。JavaScript库如jQuery或者现代的Vue、React等框架可能被用于简化代码和提高...