增强for循环

jdk1.5出现的新特性---->增强for循环
增强for循环的作用: 简化迭代器的书写格式。(注意:增强for循环的底层还是使用了迭代器遍历。)
增强for循环的适用范围: 如果是实现了Iterable接口的对象或者是数组对象都可以使用增强for循环。

增强for循环的格式: 
  for(数据类型  变量名  :遍历的目标){   //数据类型  变量名:声明一个变量用来接收遍历目标遍历后的元素
 
  }
增强for循环要注意的事项:
1. 增强for循环底层也是使用了迭代器获取的,只不过获取迭代器由jvm完成,不需要我们获取迭代器而已,所以在使用增强for循环变量元素的过程中不准使用集合
        对象对集合的元素个数进行修改。
2. 迭代器遍历元素与增强for循环变量元素的区别:使用迭代器遍历集合的元素时可以删除集合的元素,而增强for循环变量集合的元素时,不能调用迭代器的remove方法删                 除 元素。

3. 普通for循环与增强for循环的区别:普通for循环可以没有遍历的目标,而增强for循环一定要有遍历的目标。

 1 [java] view plain copy
 2  
 3 public class Demo2 {  
 4       
 5     public static void main(String[] args) {  
 6         HashSet<String> set = new HashSet<String>();  
 7         //添加元素  
 8         set.add("狗娃");  
 9         set.add("狗剩");  
10         set.add("铁蛋");  
11           
12         /* 
13         //使用迭代器遍历Set的集合. 
14         Iterator<String> it  = set.iterator(); 
15         while(it.hasNext()){ 
16             String temp = it.next(); 
17             System.out.println("元素:"+ temp); 
18             it.remove(); 
19         } 
20          
21          
22         //使用增强for循环解决 
23         for(String item : set){ 
24             System.out.println("元素:"+ item); 
25              
26         } 
27          
28          
29          
30          
31         int[] arr = {12,5,6,1}; 
32          
33         普通for循环的遍历方式 
34         for(int i =  0 ; i<arr.length ; i++){ 
35             System.out.println("元素:"+ arr[i]); 
36         } 
37          
38         //使用增强for循环实现 
39         for(int item :arr){ 
40             System.out.println("元素:"+ item); 
41         } 
42          
43          
44          
45         //需求: 在控制台打印5句hello world. 
46         for(int i = 0 ; i < 5; i++){ 
47             System.out.println("hello world"); 
48         } 
49         */  
50           
51         //注意: Map集合没有实现Iterable接口,所以map集合不能直接使用增强for循环,如果需要使用增强for循环需要借助于Collection  
52         // 的集合。  
53         HashMap<String, String> map = new HashMap<String, String>();  
54         map.put("001","张三");  
55         map.put("002","李四");  
56         map.put("003","王五");  
57         map.put("004","赵六");  
58         Set<Map.Entry<String, String>> entrys = map.entrySet();  
59         for(Map.Entry<String, String> entry  :entrys){  
60             System.out.println("键:"+ entry.getKey()+" 值:"+ entry.getValue());  
61         }  
62           
63           
64     }  
65   
66 }  
View Code
 

自定义的类也可使用增强for循环:

 1 [java] view plain copy
 2  
 3 package cn.itcast.jdk15;  
 4   
 5 import java.util.Iterator;  
 6   
 7 //自定一个类使用增强for循环  
 8 class MyList implements Iterable<String>{  
 9       
10     Object[] arr = new Object[10];  
11       
12     int index = 0 ; //当前的指针  
13       
14     public void add(Object o){  
15         arr[index++] = o;  // 1  
16     }  
17       
18     public int size(){  
19         return index;  
20     }  
21   
22     @Override  
23     public Iterator<String> iterator() {  
24           
25           
26         return new Iterator<String>() {  
27   
28             int cursor  = 0;  
29   
30             @Override  
31             public boolean hasNext() {  
32                 return cursor<index;  
33             }  
34   
35             @Override  
36             public String next() {  
37                 return (String) arr[cursor++];  
38             }  
39   
40             @Override  
41             public void remove() {  
42                   
43             }  
44         };  
45     }  
46 }  
47   
48 public class Demo3 {  
49       
50     public static void main(String[] args) {  
51         MyList list = new MyList();  
52         list.add("张三");  
53         list.add("李四");  
54         list.add("王五");  
55           
56         for(String item :list){  
57             System.out.println(item);  
58         }  
59           
60           
61           
62     }  
63       
64 }  
View Code
原文地址:https://www.cnblogs.com/yonyong/p/8450238.html