关于增强的for循环
增强的for循环例子:
public static<AnyType> void print(Collection<AnyType> coll){
for(AnyType item:coll)
System.out.println(item);
}/**这就是一个简单的增强for循环的例子**/
当编译器遇到一个正在用于Iterator的对象的增强的for循环的时候,它用对iterator
方法的那些调用替代增强的for循环以得到一个Iterator对象,然后调用next和hasNext
public static<AnyType> void print(Collection<AnyType> coll){
Iterator<AnyType>it=coll.iterator();
while(it.hasNext()){
AnyType item=it.next();
System.out.println(item);
}
}/**通过编译器使用一个迭代器改写的iterator类型上的增强for循环**/ 当使用增强的for循环,或者直接使用Iterator的时候,如果正在迭代的集合进行结构上的改变
比如对集合使用add,remove,clear等方法,那么迭代器将不再合法,并且会有异常抛出,
然而如果迭代器使用了自己的remove方法,那这个迭代器仍是合法的。 /**这个测试增强for循环里改变集合结构的代码**/
public class Text {
public static void main(String[]args){
List<Integer>zzy=new ArrayList<>();
zzy.add(6);zzy.add(5);zzy.add(1);zzy.add(4);zzy.add(2);
System.out.println(zzy);
Text.RemoveEvensver(zzy);
System.out.println(zzy);
}
public static void RemoveEvensver(List<Integer>list){ /**这是第一个方法,出现编译出错。**/
/**for (Integer x:list)
if (x%2==0)
list.remove(x);
**/ /**这是第二个方法,是正确的。**/
/**int i=0;
while (i<list.size())
if (list.get(i)%2==0)
list.remove(i);
else
i++;
**/ Iterator<Integer>it=list.iterator();
while (it.hasNext())
if (it.next()%2==0){
it.remove();
//list.add(9);
}
}
}
关于增强的for循环的更多相关文章
- 增强的for循环(或foreach)
增强的for循环(也称为foreach循环):不用下标变量,顺序的訪问整个数组.不能以其它顺序訪问数组,或者改变数组的元素. for(elementType element: arrayRefVar) ...
- JAVA笔记18-容器之二增强的for循环(不重要)
JDK1.5增强的for循环(foreach??)
- Java之增强的for 循环
3. 增强for循环 1) 作用: 对存储对象的容器进行迭代 2) jdk5以前怎么迭代 3) 增强for循环迭代数组 String [] arr = {"a", "b ...
- Java——JDK1.5新增强的for循环
<1>JDK1.5新增的for循环对于遍历array或collection非常便利. <2>缺陷: 数组:不能方便地访问下标值. 集合:与使用Int ...
- 增强的for循环
- 增强for循环用法___ArrayList数组实现使用下标最好,LinkedList使用增强型的(转载)
总结: 1.For-Each循环的缺点:丢掉了索引信息. 当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息. ...
- 关于增强for循环
1 增强for循环增强for循环是for的一种新用法!用来循环遍历数组和集合. 1.1 增强for的语法for(元素类型 e : 数组或集合对象) {}例如:int[] arr = {1,2,3};f ...
- Java中增强for循环的用法
此方法在jdk1.5之后才出现. 1:遍历数组 语法: for (Type value : array) { expression value; } 例子: void Sum() { int[] ar ...
- for循环和增强版的for循环
增强的for循环. 缺点: 对于数组.不能方便的訪问下标值. 对于集合,与使用Interator相比.不能方便的删除集合中的内容(在内部也是调用Interator). 除了简单遍历并读取当中的 ...
随机推荐
- 服务器上u盘装机centos7.2
说明: 截止目前CentOS 7.x最新版本为CentOS 7.2.1511,下面介绍CentOS 7.2.1511的具体安装配置过程 服务器相关设置如下: 操作系统:CentOS 7.2.1511 ...
- swift protocol的几种形式
三个关注点:1.形式:2.实现方式:3.使用方式: 一.基本形式: 形式:内部无泛型类型: 实现:只需指定类型和实现相应的功能即可: 使用:可以用在其他类型出现的任何地方: protocol Resp ...
- [CQOI2009]叶子的染色
传送门:https://www.luogu.org/problemnew/show/P3155 一道挺水的树形dp题,然后我因为一个挺智障的问题debug了一晚上…… 嗯……首先想,如果一个点的颜色和 ...
- PHP安全过滤函数
在PHP中,有些很有用的函数开源非常方便的防止你的网站遭受各种攻击,例如SQL注入攻击,XSS(Cross Site Scripting:跨站脚本)攻击等. 1. mysql_real_escap ...
- apache出现You don’t have permission to access / on this server问题的解决
今天在部署一个系统时,在apache中新开了一个VirtualHost,然后设置了DocumentRoot,等访问时却提示“You don’t have permission to access / ...
- __init__函数
初始化函数,类似于c++的构造函数 在创建一个对象时默认被调用,不需要手动调用.self后面接的形参,在类实例化的时候必须传递,__init__函数里的参数都属于成员变量
- scrt中使用alt键
session Options-->Terminal---->Emulation------>Emacs----->Use ALT as meta key
- lua-resty-gearman模块
粘贴一段百度对gearman的解释: Gearman是一个用来把工作委派给其他机器.分布式的调用更适合做某项工作的机器.并发的做某项工作在多个调用间做负载均衡.或用来在调用其它语言的函数的系统. lu ...
- opencv——对象提取与测量
#include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespac ...
- Python2.7-time
time模块,与datetime模块功能有所重合,time较为简单明了,若只需要当前时间或日期或是sleep,直接用time模块,需要更复杂的时间间隔等情况用datetime模块更好 1.获得time ...