java基础39 增强for循环(也叫foreach循环)
增强for循环是jdk1.5出现的新功能
1、增强for循环的作用
简化了迭代器的书写格式(注意:增强for循环底层还是使用了迭代器遍历)
2、增强for循环的格式
for(数据类型 变量名:遍历的目标){ }
3、增强for循环的适用范围
如果实现了 Iterable 接口或者数组对象都可以使用增强for循环
1 package com.dhb.pattern; 2 3 import java.util.Iterator; 4 5 /** 6 * @author DSHORE / 2018-6-8 7 * 8 */ 9 class MyList implements Iterable<String>{ 10 Object[] arr=new Object[10]; 11 int index=0;//当前指针 12 public void add(Object o){ 13 arr[index++]=o; 14 } 15 public Iterator<String> iterator() { 16 17 return new Iterator<String>() {//new Iterator<String>():匿名内部类 Iterator接口,抽象的不能直接new 18 int cursor=0;//指针 19 //hasNext()、next()、remove()都是实现new Iterator<String>()中的方法 20 public boolean hasNext() { 21 return cursor<index; 22 } 23 public String next() { 24 25 return (String)arr[cursor++]; 26 } 27 public void remove() { 28 29 } 30 };//结束匿名内部类的符号“;” 31 } 32 } 33 public class Demo2 { 34 public static void main(String[] args) { 35 MyList list=new MyList(); 36 list.add("张三"); 37 list.add("李四"); 38 list.add("王五"); 39 list.add("赵六"); 40 for (String string : list) { 41 System.out.print(string+",");//返回结果:张三,李四,王五,赵六, 42 } 43 } 44 }
4、增强for循环需要注意的事项
1、增强for循环底层也是使用迭代器获取的,只不过获取迭代器是由jvm完成,不需要我们获取迭代器,索引在使用增强for循环遍历元素的过程中,不准使用集合对对象 对集合元素经行修改
2、迭代器遍历元素和增强for循环的区别:使用迭代器遍历元素时可以删除集合元素,而增强for循环遍历集合元素时,不能调用迭代器里面的remove方法删除元素
3、普通for循环与增强for循环的区别:普通for循环可以没有变量目标,而增强for循环一定要有变量目标
5、实例
1 package com.dhb.pattern; 2 3 import java.util.HashSet; 4 /** 5 * @author DSHORE / 2018-6-8 6 * 7 */ 8 public class Demo3 { 9 public static void main(String[] args) { 10 //集合 11 HashSet<String> set=new HashSet<String>(); 12 set.add("狗剩"); 13 set.add("铁蛋"); 14 set.add("哮天神犬"); 15 16 Iterator<String> it=set.iterator(); //使用迭代器遍历set集合 17 while(it.hasNext()){ 18 System.out.println(it.next()); 19 } 20 21 for(String s:set){//使用增强for循环遍历 22 System.out.println(s); 23 } 24 25 //数组 26 int[] arr={12,2,5,0}; 27 for (int i = 0; i < arr.length; i++) {//普通for循环遍历 28 System.out.println(arr[i]); 29 } 30 31 for (int i : arr) {//增强for循环遍历 32 System.out.println(i); 33 } 34 } 35 }
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/9156896.html 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |