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 }
自定义的类也可使用增强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 }