`

在容器中使用增强的for循环,简洁大气,结构清晰

阅读更多

除了增强的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循环

    这里的“类型”是集合或数组中元素的类型,“变量”是在循环中使用的临时变量,用于存储每次迭代时当前元素的值,“集合或者数组”则是我们想要迭代的对象。 例如,如果我们有一个整数数组,我们可以使用增强型for...

    MATLAB工具箱大全-将多重循环转为单重循环-For-Each

    然而,在MATLAB R2017b及以后的版本中,可以直接使用`for-each`循环处理向量或数组,因此我们可以进一步简化代码: ```matlab A = [1, 2, 3]; B = [4, 5, 6]; result = A .* B; % 直接使用向量乘法,无需循环 ``` ...

    JAVA练习题(for循环练习题等)

    使用`for`循环遍历101到200之间所有的数字,并检查每个数字是否为素数。素数是指只能被1和它本身整除的大于1的自然数。 ```java for (int i = 101; i ; i++) { boolean isPrime = true; for (int j = 2; j (i); j...

    python基础教程:for循环用法.pdf

    Python中的for循环是一种非常基础且常用的控制流程结构,它用于遍历任何可迭代对象中的元素。在Python中,可迭代对象包括但不限于列表、元组、字符串、字典以及集合等。接下来,我们将深入探讨for循环的用法及其在...

    简洁大气灰色企业网站模板.rar

    该资源是一个名为"简洁大气灰色企业网站模板.rar"的压缩包,内含一套全面的企业网站设计模板。这个模板采用灰色为主色调,旨在营造出专业、稳重且不失时尚感的视觉效果,适合各类企业的在线形象展示。以下是这套模板...

    for_each 返回值

    在 C++ STL 中,for_each 算法是一种非常有用的算法,它可以对容器中的每个元素应用一个函数对象(仿函数)。在本文中,我们将详细介绍 for_each 返回值的使用方法和实现原理。 for_each 算法概述 for_each 算法是...

    EXCEL在压力容器中的应力分析与结构优化

    在压力容器设计与制造领域,应用Excel进行应力分析和结构优化是一个重要的研究方向。本文将基于弹性失效设计准则,对压力容器在最苛刻工况下壳体所受最大拉应力进行最小化的目标,详细探讨利用Excel软件在这一领域内...

    简洁大气的灰色主题倒计时效果实现

    在IT行业中,创建一个“简洁大气的灰色主题倒计时效果”是常见需求,尤其在网页设计、App界面或者活动预告等场景。这样的设计能够吸引用户的注意力,同时提供清晰的时间信息。下面我们将深入探讨实现这一效果所涉及...

    java 数组、for循环、dowhile实例代码

    在Java编程语言中,数组、for循环和do-while循环是基础且至关重要的概念,用于组织数据和控制程序流程。让我们深入探讨这些知识点,并通过实例代码来加深理解。 首先,数组是存储相同类型数据集合的容器。在Java中...

    简洁大气的jQuery响应式全屏幻灯片特效代码

    本项目“简洁大气的jQuery响应式全屏幻灯片特效代码”充分利用了jQuery的强大功能,提供了适应不同屏幕尺寸的全屏幻灯片解决方案,特别适合于现代网页设计,特别是那些注重移动友好性的网站。 首先,我们要理解...

    网站模板21-蓝色简洁大气船舶运输企业官网模板.zip

    简洁大气的设计风格体现在布局清晰、信息层次分明,避免过多的装饰元素,使用户能快速获取关键信息。 2. **网页结构**:一个优质的网站模板应具备良好的导航结构,方便用户快速找到所需信息。此模板可能包括首页、...

    java练习题--容器使用练习

    6. 遍历机制:熟悉foreach循环(增强for循环)和迭代器两种遍历容器的方法,并在练习题中使用这两种方法操作不同类型的容器。 7. 容器与多线程:学习在多线程环境中使用容器,了解线程安全问题,例如同步容器类(如...

    压力容器用CAD增强插件VCAD

    通过集成在主流CAD软件中,如AutoCAD或SolidWorks,VCAD能够帮助工程师快速绘制容器的二维草图和三维模型,实现快速出图,同时支持参数化设计,使得设计修改变得更加灵活。 VCAD的核心功能包括: 1. 自动计算:...

    简洁大气带进度条的URL跳转页面HTML源码

    在这个“简洁大气带进度条的URL跳转页面HTML源码”中,我们主要关注两个关键元素:页面的布局设计以及进度条功能的实现。 首先,页面布局通常涉及到HTML的容器元素,如`&lt;div&gt;`,用于组织内容。设计师可能会使用CSS...

    简洁大气电影海报资讯网css模板下载-简洁 电影 资讯 大图.rar

    4. **大图背景**:标题提到“大图”,这可能指的是模板中使用的大尺寸背景图片,用于营造视觉冲击力。CSS可以控制背景图片的大小、位置和重复,如`background-size`、`background-position`和`background-repeat`...

    09_流程控制_4_for循环1

    在编程语言中,循环是一种控制程序执行流程的关键结构,它允许我们重复执行一段代码,直到满足特定条件为止。其中,`for`循环是最常用的循环之一,尤其在处理数据遍历时。本节将深入探讨Python中的`for`循环及其相关...

    Python使用容器中常用代码

    在Python中,容器都支持迭代,即通过for循环遍历其元素。迭代器对象可以逐个返回容器中的元素,而不需要一次性加载所有数据,节省内存。生成器是一种特殊的迭代器,通过`yield`语句实现,可以延迟计算和记忆状态,常...

    详解Java中list,set,map的遍历与增强for循环

    本篇文章将深入探讨Java中的List、Set和Map三种主要集合类型的遍历方法,以及如何使用增强for循环(也称为foreach循环)来简化代码。 首先,我们来看集合框架的基础。Java集合分为两大部分:Collection接口和Map...

    简洁宽屏大气商务css3企业整站模板6021.zip

    JavaScript在模板中主要负责增强交互性和功能。可能包含了诸如下拉菜单、轮播图、表单验证等常见功能,提升了用户在网站上的操作便捷性。JavaScript库如jQuery或者现代的Vue、React等框架可能被用于简化代码和提高...

Global site tag (gtag.js) - Google Analytics