-
2021-10-11 15:43:02
增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。他的内部原理其实是一个Iterator迭代器,所以再遍历的过程中,不能对集合中的的元素进行正山操作
格式如下:
for (元素的数据类型 变量: Collection集合or数组) {
// 写操作代码
}
注意:
增强for循环必须有被遍历的目标,目标只能是Collection或者是数组,而且增强for循环只能用作遍历举例说明:
1、使用增强for循环遍历集合public static void main(String[], args) {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("d");
list.add("c");
list.add("s");
for(String s: list){
System.out.println(s);
}
}
2、使用增强for循环遍历数组public static void main(String[], args) {
int[] array = {1, 2, 3, 4, 5};
for(int i: array){
System.out.println(i);
}
}
增强型for循环定义如下:
for(ElementType element: arrayName){};
例1:
int[] num = {1,2,3,4,5,6};
for(int i: num){
System.out.print(i);
}
例2:
int[] num = {1,2,3,4,5,6};
for(int i = 0; i < num.length; i++){
System.out.print(num[i]);
}
例1是等价于例2的同理可有:
List<Integer> intList = new ArrayList<Integer>();
for (Integer i: intList) {
System.out.print(i);
}
相对于for(;;)而言 增强for循环有两个好处:
1.写起来简单
2.遍历集合、容器简单
例3:
int[] a;
a=new int[5];
int b=0;
for(int c:a)
{
a[c]=c;
System.out.println(a[c]);
}
Arrays.sort(a);
System.out.println(Arrays.toString(a));
例4:
int[] num;
num=new int[5];
int k=0;
for(int j=0;j<num.length;j++)
{
num[j]=j;
}
System.out.println(Arrays.toString(num));
}
更多相关内容 -
浅谈java 增强型的for循环 for each
2020-09-01 12:19:22下面小编就为大家带来一篇浅谈java 增强型的for循环 for each。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
Java中增强for循环总结
2021-02-26 10:19:361 增强for循环增强for循环是for的一种新用法!用来循环遍历数组和集合。1.1 增强for的语法for(元素类型 e : 数组或集合对象) {}例如:int[] arr = {1,2,3};for(int i : arr) {System.out.println(i);}增强for的...1 增强for循环
增强for循环是for的一种新用法!用来循环遍历数组和集合。
1.1 增强for的语法
for(元素类型 e : 数组或集合对象) {
}
例如:
int[] arr = {1,2,3};
for(int i : arr) {
System.out.println(i);
}
增强for的冒号左边是定义变量,右边必须是数组或集合类型。例如上例中循环遍历的主浊arr这个int数组,增强for内部会依次把arr中的元素赋给变量i。
1.2 增强for的优缺点
只能从头到尾的遍历数组或集合,而不能只遍历部分;
在遍历List或数组时,不能获取当前元素下标;
增强for使用便简单,这是它唯一的优点了;
增强for比使用迭代器方便一点!
1.3 增强for原理
其实增强for内部是使用迭代器完成的!也就是说,任何实现了Iterable接口的对象都可以被增强for循环遍历!这也是为什么增强for可以循环遍历集合的原因(Collection是Iterable的子接口)。
但要注意,Map并没有实现Iterable接口,所以你不能直接使用增强for来遍历它!
1 Map map = new HashMap();2 map.put("1", "one");3 map.put("2", "two");4 map.put("3", "three");5
6 for(String key : map.keySet() ) {7 String value =map.get(key);8 System.out.println(key + "=" +value);9 }
map.keySet()循环遍历map的所有键,map.keySet()返回的是Set类型,而Set是可以被增强for遍历的。
一:传统的for循环和增强for循环的比较
1 //传统的数组遍历
2 String[] persons={"张三","李四","王五"};3 for(int i=0;i
7 String[] persons={"张三","李四","王五"};8 for(String person:persons){9 System.out.println(person);10
11 //传统的Iterator遍历集合
12 List persons=new ArrayList();13 persons.add("张三");14 persons.add("李四");15 persons.add("王五");16 for(Iterator i=persons.iterator();i.hasNext();){17 String person=i.next();18 System.out.println(person);19 }20 //使用增强For循环遍历集合
21 List persons=new ArrayList();22 persons.add("张三");23 persons.add("李四");24 persons.add("王五");25 for(String person:persons){26 System.out.println(person);27 }
可以看到使用增强for循环使得代码变得短小而精炼的多,如果你觉得这点变化还体现不出来,可以忍受,那你可以试试嵌套for循环,就会感觉到增强for循环的好处了,这里就不贴代码了。
二:定制自己的增强for循环
众所周知,增强for循环是按数组或者集合的内在顺序输出的,如果我们想在遍历的时候定制行为怎么做呢?下面就以一个逆序输出的例子说明怎么定制自己的增强for循环。
要想使用增强for循环,必须实现Iterable接口。
ReverIterableClass.java
1 importjava.util.Iterator;2
3 /**
4 * 一个简单的逆序输出增强for循环5 */
6 public class ReverIterableClass implements Iterable{7 protectedT[] elements;8 publicReverIterableClass(T... elems) {9 this.elements=elems;10 }11 public Iteratoriterator() {12 return new Iterator(){13 private int current=elements.length-1;14 public booleanhasNext() {15 return current>-1;16 }17
18 publicT next() {19 return elements[current--];20 }21
22 public voidremove() {23 throw new UnsupportedOperationException("目前不支持删除操作");24 }25 };26 }27 public static voidmain(String[] args){28 ReverIterableClass iterableClass=new ReverIterableClass("a","b","c","d");29 for(String s:iterableClass){30 System.out.println(s);31 }32 }33 }
在这个程序里我们定制了自己的输出行为--逆序输出,当然你也可以定义属于你自己的,只需要在next()函数里写处理代码即可。
三:增强for循环的局限性
不能在增强for循环中访问位置,例如下面的代码:
String[] persons={"张三","李四","王五"};for(int i=0;i
System.out.println(i+":"+persons[i]);
}
在增强for循环中你是得不到这个位置"i"的。
例如还有我们常用的在组合sql语句,select字段的时候,当是最后一个字段时,不能加","的。
1 String[] fields={"name","age","sex"};2 StringBuilder sql=new StringBuilder("select ");3 for(int i=0;i
这在增强for循环中也是不能处理的。。
还有对元素的删除,在增强for循环中也不能做到,但是使用传统的Iterator接口遍历时就可以使用他的remove()方法删除符合条件的元素。
四:小结
增强for循环有它的好处,比如简洁,代码优雅,如果能使用增强for循环,一定要优先使用。
-
Java增强 for 循环
2022-06-22 17:58:14Java增强for循环Java 增强 for 循环
Java5 所引入的一种主要用于数组的增强型for循环。(可用来遍历数组)
Java 增强for循环语法如下:
for(声明语句 : 表达式) { //代码句子 }
声明语句:
声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。表达式:
表达式是要访问的数组名,或者是返回值为数组的方法。
Java文件代码:
public class Test { public static void main(String[] args){ int [] numbers = {10, 20, 30, 40, 50}; for(int x : numbers ){ System.out.print( x ); System.out.print(","); } System.out.print("\n"); String [] names ={"James", "Larry", "Tom", "Lacy"}; for( String name : names ) { System.out.print( name ); System.out.print(","); } } }
创建类,并创建出该类的数组,再用增强for循环遍历出
创建类Employee(其子类:SalariedEmployee,HourlyEmployee,SalesEmployee,BasePlusSalesEmployee),并在Test2中创建一个Employee 数组,分别创建若干不同的Employee子类对象,通过使用Java增强for循环来遍历打印出来。
package two; public class Test2 { public static void main(String[] args) { // TODO Auto-generated method stub Employee[] em = new Employee[4];//创建一个Employee 数组em em[0]=new SalariedEmployee("张三",5,5000);//创建一个子类的对象 em[1]=new HourlyEmployee("李四",3,30,172); em[2]=new SalesEmployee("王五",4,10000,0.3); em[3]=new BasePlusSalesEmployee("王二",5,20000,0.03,5000); for(Employee e:em) { System.out.println(e.getName()+"的5月工资:"+e.getSalary(5)+"元"); } } }
-
Java中使用增强for循环的实例方法
2020-08-25 17:35:50在本篇文章里小编给大家整理是的关于Java中如何使用增强for循环的实例内容以及相关代码,需要的朋友们可以学习下。 -
Java中普通for循环和增强for循环的对比
2022-04-01 21:20:57Java中普通for循环和增强for循环的对比Java中普通for循环和增强for循环的对比
今天刷LeetCode时发现对于普通数组用普通for循环比用增强for each循环耗时少,因此在网上查找了资料之后决定自己通过反编译进行比较。
反编译之后的结果:
通过javap -v-c-l 反编译之后发现,增强for循环底层是通过迭代器iterator来实现的,next,hasNext();而普通for循环就是单纯根据下标进行访问。因此我们可以知道,当数据量大时在对底层通过数组实现的ArrayList进行普通for循环访问时,普通for循环是要比增强for循环快的。在对LinkedList用增强for循环遍历时要比用普通for循环快。
我们先用十万数据量进行测试:
测试代码:public static void main(String[] args) { List<Integer> arrayList = new ArrayList<Integer>(); List<Integer> linkList = new LinkedList<Integer>(); // 每个集合插入10万条数据 for (int i = 0; i < 100000; i++) { arrayList.add(i); linkList.add(i); } int arry = 0; System.out.println("============遍历arrayList============"); // 用for循环arrayList long forStartTime = System.currentTimeMillis(); for (int i = 0; i < arrayList.size(); i++) { arry = arrayList.get(i); } long forEndTime = System.currentTimeMillis(); System.out.println("for遍历需要:" + (forEndTime - forStartTime) + "毫秒"); // 用增强for循环arrayList long forUpStartTime = System.currentTimeMillis(); for (Integer in : arrayList) { arry = in; } long forUpEndTime = System.currentTimeMillis(); System.out.println("增强for遍历需要:" + (forUpEndTime - forUpStartTime) + "毫秒"); System.out.println("============linkList============"); // 用for循环linkList long linkForStartTime = System.currentTimeMillis(); int link = 0; for (int i = 0; i < linkList.size(); i++) { link = linkList.get(i); } long linkForEndTime = System.currentTimeMillis(); System.out.println("for遍历:" + (linkForEndTime - linkForStartTime) + "毫秒"); // 用增强for循环linkList long linkForeachStartTime = System.currentTimeMillis(); for (Integer in : linkList) { link = in; } long linkForeachEndTime = System.currentTimeMillis(); System.out.println("用增强for遍历需要:" + (linkForeachEndTime - linkForeachStartTime) + "毫秒"); }
十万数据量结果:
插入百万数据量结果:
从上面结果可以看出,插入10万数据量时,对于ArrayList来说,普通for循环和增强for循环时间都是3ms,当数据上升到百万时,普通for循环要比增强for循环快;对于LinkedList来说,10万数据量时,普通for循环比增强for循环慢了很多个数量级。当增加到百万数据量时,增强for循环所使用的时间只用了10ms,但是普通for循环的时间就很长了,已经达到1268秒以上。
既然这次讨论了普通for循环和增强for循环,下次我会继续比较普通for、增强for以及java8 新增的foreach。 -
Java增强for循环中获取index
2019-08-03 01:27:08NULL 博文链接:https://rensanning.iteye.com/blog/2003205 -
关于Java中增强型for循环遇到的问题
2020-06-04 15:19:55当我在使用Java的增强型for循环时 public class Text { public static void main(String[] args) { int a[] = new int[]{1, 2, 3, 4, 5}; for(int i = 0; i < a.length; i++){ System.out.print(a[i]+","); ... -
Java实用技巧---增强for循环
2022-02-13 09:45:531、泛型接口 把泛型定义在接口上 格式:public interface 接口名<泛型类型1…>...2、增强for循环概述:简化数组和Collection集合的遍历 语句定义格式: for(元素数据类型 变量名(自定义).. -
增强 For 循环
2021-08-21 19:37:49也成为【for each】循环,是JDK1.5版本以后出来的一个高级for循环,专门用来遍历数 组和集合的,它的内部原理其实就是iterator迭代器,所以在遍历过程中,不能对集合的元素 进行增删操作。 二、格式 for( 元素... -
java中的增强for循环
2022-02-12 16:14:21/*增强for循环 * 语法格式: * for(元素类型 变量名: 数组或集合) { * System.out.println(变量名); * } * 缺点:没有下标,在需要使用下标的循环中不建议使用*/ public class ForEachTest01 { public static void ... -
Java中的增强for循环问题
2022-03-21 13:09:31刷题时想用增强for循环来给初始数组赋值,结果发现了问题。所以记录学习一下增强for循环的用法。 1. 增强for循环 增强for循环是for的一种新用法!用来循环遍历数组和集合。 2. 语法 for (元素类型 e : 数组或... -
Java基础之增强型for循环
2018-05-07 10:50:06增强型for循环语法:for(ElementTypeelement:arrayName){}; 增强for循环的原理 增强型for循环注意事项 增强型for循环语法:for(ElementTypeelement:arrayName){}; 举个例子:(1) int[]numArray={1,2,3,4,5,6}; ... -
java中使用增强型的for循环有什么好处
2016-08-11 13:30:05这是个很好的强化功能,因为这是for循环很常见的用途。我们会在讨论非数组的集合时再次看到加强版的for循环。 for (String name : nameArray) { } 1、String name--声明会带有数组单一元素的循环变量,数组元素... -
Java 中增强for循环和普通for循环的区别
2021-09-06 15:44:40增强for使用增强for循环的时候不能使用集合删除集合中的元素; 增强for循环不能使用迭代器中的方法,例如remove()方法删除元素; 与普通for循环的区别:增强For循环有遍历对象,普通for循环没有遍历对象; 对于实现... -
java for循环与增强for循环
2013-11-28 20:44:57增强型的for循环 和普通for循环一样 增强型的for循环 优点主要体现在集合中,随便举个例子 比如对 set 的遍历 一般是迭代遍历 -
增强型for循环与普通for循环的区别
2021-02-27 19:57:59增强型for循环与普通for循环的区别总结: 1、增强型for循环书写简洁,遍历数组时不需要下标,主要用于数组或集合的遍历,数组或集合遍历完毕时循环会结束执行。 2、普通for循环需要三个条件,包括循环变量、循环... -
【Java基础】 增强型for循环
2021-01-31 21:56:23[Java基础] 之增强型for循环 前言: 增强型for循环只能够用于取数组中的值,而不能用于修改数组中的值,增强型for循环在遍历一个数组的时候会更加快捷。 用法: int array[]=new int[]{1,2,3,4,5}; for (int ... -
Java for循环增强
2021-12-13 22:12:32java5引进了一种主要用于数组和集合的增强型for循环。我们这里先做了解就可以。 增强型for循环语句如下: for(声明语句:表达式){ //代码句子 } 注解:声明语句:声明新的局部变量,该变量的类型必须和数组... -
java-增强型for循环
2019-01-23 10:10:29for(声明语句:表达式) { 代码语句 } 声明语句中的局部变量必须与表达式中的类型一致。 ...public class JavaFor { ...使用增强for循环"); String[] fruits ={"Apple",... -
Java自学-数组 增强型for循环
2021-03-11 17:22:04Java 中如何使用增强for循环增强型for循环在遍历一个数组的时候会更加快捷步骤 1 : 增强型for循环注:增强型for循环只能用来取值,却不能用来修改数组里的值public class HelloWorld {public static void main... -
Java——增强型for循环
2019-01-08 15:47:26package day04;... * 新循环,又名:增强for循环for each * 从java1.5(5.0)后推出的新特性 * 新循环不能代替传统循环的工作 * 新循环只用来遍历集合或数组 * @author Administrator * */ publ... -
java – 为什么增强for循环的循环效率比正常
2021-02-12 21:04:16说增强for循环更有效率有点过分简单。它可以是,但在许多情况下,它几乎完全一样的老校园循环。首先需要注意的是,对于集合,增强的for循环使用了一个迭代器,所以如果你使用迭代器手动迭代一个集合,那么你应该具有... -
增强型for循环的使用,看这篇就够了
2022-03-29 16:20:58从开始接触Java编程时,简单的循环遍历(for、while、do…...其实就是我没有掌握java jdk5.0新增的特性而已,接下来对增强型for循环做详细的说明与介绍。 目录1. 定义2. 遍历集合3. 遍历数组4. 区分普通for循 -
一个Java增强型for循环的易犯错误,你注意到了吗?
2021-03-09 21:54:02增强型for循环被设计出来就是为了遍历数组或者是集合的,所以在循环中都会指定一个数组或者是集合。为了方便程序员编码,增强型for循环...下面来看一个简单例子:在这个增强型for循环中,指定的数组叫做array。每次... -
增强型for循环和普通for循环在使用上的区别
2018-01-11 16:29:26增强型for循环使用起来比较方便,代码也比较简单,如果只是操作集合中元素的而不使用索引的话,建议用此方法。 对于普通for循环,如果需要使用索引进行其它操作的话,建议用这个。 详细来说: 1,区别: ... -
java增强型for循环(三种遍历集合方式)
2017-08-14 15:28:32For-Each循环也叫增强型的for循环,或者叫foreach循环。 For-Each循环是JDK5.0的新特性(其他新特性比如泛型、自动装箱等)。 For-Each循环的加入简化了集合的遍历。 语法如下: [java] view plain ...