for循环 && for-each
Effective Java 第46条for-each循环优先于传统for循环
问题:
使用for循环来遍历集合或者是数组可以借助迭代器和索引变量。但是,如果出现循环嵌套的时候很容易引起混乱。
例如:
public static void testfor() {
String Suit[] = {"CLUB","DIAMOND","HEART","SPADE"};
String Rank[] = {"ACE","DEUCE","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT",
"NINE","TEN","JACK","QUEEN","KING"};
Collection<String> suits = Arrays.asList(Suit);
Collection<String> ranks = Arrays.asList(Rank);
for (Iterator<String> i = suits.iterator();i.hasNext();){
for (Iterator<String> j = ranks.iterator();j.hasNext();){
System.out.println(i.next()+":"+j.next());
}
}
}
public static void main(String arg[]) {
testfor();
}
运行程序:
CLUB:ACE
DIAMOND:DEUCE
HEART:THREE
SPADE:FOUR
Exception in thread "main" java.util.NoSuchElementException
at java.util.AbstractList$Itr.next(AbstractList.java:364)
at com.sankuai.ia.demo.web.controller.TESTController.testfor(TESTController.java:73)
at com.sankuai.ia.demo.web.controller.TESTController.main(TESTController.java:81)
NoSuchElementException : 访问越界:因为最外层的迭代器里面已经没有元素了。 for-each 好处:
for (String i : suits) {
for (String j: ranks) {
System.out.println(i+":"+j);
}
}
使用for-each 可以解决这个问题且代码简洁。且实际上,在某些情况下,比起普通的for循环,for-each 还稍有些性能上的优势,因为它对数组边界值只计算一次。
Effective Java 第45条将局部变量的作用域最小化
好严重的警告⚠️:要是局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明。
1、如果变量在使用之前进行声明只会造成混乱
2、如果你还没有足够的信息来对这一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化为止。
某些地方无法使用for-each方法:
1、过滤:需要调用集合的remove方法
2、转换:取代设定其他元素
3、平行迭代;并不是嵌套全部遍历那种。
for循环 && for-each的更多相关文章
- 【.net 深呼吸】细说CodeDom(8):分支与循环
有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- 模仿Linux内核kfifo实现的循环缓存
想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...
- 【JS基础】循环
for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被 ...
- 【python之路4】循环语句之while
1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...
- To Java程序员:切勿用普通for循环遍历LinkedList
ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...
- JavaScript单线程和浏览器事件循环简述
JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...
- .NET基础 一步步 一幕幕[循环、逻辑语句块]
循环.逻辑语句块 好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好 ...
- Linux进程管理及while循环
目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...
随机推荐
- Nginx配置CI框架问题(Linux平台下Centos系统)
CI框架:官方文档 http://codeigniter.org.cn/user_guide/index.html CI框架的数据流程图如下: 其中:index.php作为入口文件,在安装好CI框架后 ...
- C++ 线性搜索算法演示的代码
将做工程过程中比较好的内容做个备份,下边代码段是关于C++ 线性搜索算法演示的代码. #include<iostream>#include<conio> int linears ...
- Livepeer中文白皮书(翻译)
Livepeer Whitepaper 分布式视频流媒体传输协议及经济激励 Doug Petkanics doug@livepeer.org Eric Tang eric@livepeer.org 翻 ...
- [UE4]线性插值Lerp
- IIS发布ASP.NET Core
安装IIS.程序和功能--程序卸载--启用或关闭Windows功能 安装.NET Core SDK和Runtime.下载网址 https://www.microsoft.com/net/downloa ...
- MySQL MGR+ Consul之数据库高可用方案
背景说明: 基于目前存在很多MySQL数据库单点故障,传统的MHA,PXC等方案用VIP或者DNS切换的方式可以实现.基于数据库的数据强一致性考虑,采用MGR集群,采用consul服务注册发现 ...
- Java 环境配置 与 碰到的问题
小白记录,希望各位指点,长期整理修改 不定期更新,碰到的与之相关的会添加,做个小笔记,再次碰到可以更好的解决. JDK 下载:Oracle 配置方法:菜鸟教程 - Java 开发环境配置 作用 JAV ...
- 【转录组入门】3:了解fastq测序数据
操作:需要用安装好的sratoolkit把sra文件转换为fastq格式的测序文件,并且用fastqc软件测试测序文件的质量 作业:理解测序reads,GC含量,质量值,接头,index,fastqc ...
- New Journey--工作五年所思所感小记
正式参加工作满五年了,2013年7月9日走入游戏行业.之前就计划着应该提笔写点什么留下来,但当日子真的到了,竟是不知说些什么了.14年年中的时候我曾写过一篇工作一年的总结,现在回头读起来,还真是别有一 ...
- solr中Cache综述
一.概述 Solr查询的核心类就是SolrIndexSearcher,每个core通常在同一时刻只由当前的SolrIndexSearcher供上层的handler使用(当切换SolrIndexSear ...