增强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循环一定要有遍历的目标。

public class Demo2 {  
 public static void main(String[] args) {  
        HashSet<String> set = new HashSet<String>();  
 //添加元素 
        set.add("狗娃");  
        set.add("狗剩");  
        set.add("铁蛋");  
 /* 
        //使用迭代器遍历Set的集合. 
        Iterator<String> it  = set.iterator(); 
        while(it.hasNext()){ 
            String temp = it.next(); 
            System.out.println("元素:"+ temp); 
            it.remove(); 
        } 
        //使用增强for循环解决 
        for(String item : set){ 
            System.out.println("元素:"+ item); 
        } 
        int[] arr = {12,5,6,1}; 
        普通for循环的遍历方式 
        for(int i =  0 ; i<arr.length ; i++){ 
            System.out.println("元素:"+ arr[i]); 
        } 
        //使用增强for循环实现 
        for(int item :arr){ 
            System.out.println("元素:"+ item); 
        } 
        //需求: 在控制台打印5句hello world. 
        for(int i = 0 ; i < 5; i++){ 
            System.out.println("hello world"); 
        } 
        */ 
 //注意: Map集合没有实现Iterable接口,所以map集合不能直接使用增强for循环,如果需要使用增强for循环需要借助于Collection 
 // 的集合。 
        HashMap<String, String> map = new HashMap<String, String>();  
        map.put("001","张三");  
        map.put("002","李四");  
        map.put("003","王五");  
        map.put("004","赵六");  
        Set<Map.Entry<String, String>> entrys = map.entrySet();  
 for(Map.Entry<String, String> entry  :entrys){  
            System.out.println("键:"+ entry.getKey()+" 值:"+ entry.getValue());  
        }  
    }  
}  

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

package cn.itcast.jdk15;  
import java.util.Iterator;  
//自定一个类使用增强for循环 
class MyList implements Iterable<String>{  
    Object[] arr = new Object[10];  
 int index = 0 ; //当前的指针 
 public void add(Object o){  
        arr[index++] = o;  // 1 
    }  
 public int size(){  
 return index;  
    }  
 @Override 
 public Iterator<String> iterator() {  
 return new Iterator<String>() {  
 int cursor  = 0;  
 @Override 
 public boolean hasNext() {  
 return cursor<index;  
            }  
 @Override 
 public String next() {  
 return (String) arr[cursor++];  
            }  
 @Override 
 public void remove() {  
            }  
        };  
    }  
}  
public class Demo3 {  
 public static void main(String[] args) {  
        MyList list = new MyList();  
        list.add("张三");  
        list.add("李四");  
        list.add("王五");  
 for(String item :list){  
            System.out.println(item);  
        }  
    }  
}  

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一个会写诗的程序员的博客

《零基础 Java 开发 》 第五章 数组第五章 数组

数组是一个基础的数据结构,它用来存储一组相同类型的元素的集合。数组非常有用,例如Java提供的集合类ArrayList、HashMap等都是基于数组来实现的。

1203
来自专栏机器学习实践二三事

Python基础----数据变量和变量

整数 Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。 计算机由于使用...

1985
来自专栏星汉技术

Scala中的集合类型

73310
来自专栏程序员互动联盟

【专业技术】关于JS的prototype

概述: 在接触JS的过程中,随着理解的深入会逐渐的理解一些比较深奥的理论或者知识,那么今天我们来介绍一下比较难理解的prototype和constructor。...

3206
来自专栏一直在跳坑然后爬坑

Kotlin之“AbstractMutableList”

打印结果分别为 prefix1:2:3:4:5:6postfix prefix1:2:3:truncatedpostfix

1512
来自专栏郭耀华‘s Blog

Java集合框架(一)—— Collection、Iterator和Foreach的用法

1.Java集合概述   在编程中,常常需要集中存放多个数据。当然我们可以使用数组来保存多个对象。但数组长度不可变化,一旦在初始化时指定了数组长度,则这个数组长...

3499
来自专栏Android开发指南

8:String类

2898
来自专栏用户2442861的专栏

java中的内部类总结

http://www.cnblogs.com/nerxious/archive/2013/01/24/2875649.html

873
来自专栏一“技”之长

Swift中构造方法的解析 原

      构造方法是一个类创建对象最先也是必须调用的方法,在Objective-C中,开发者更习惯称这类方法为初始化方法。在Objective-C中的初始化方...

882
来自专栏章鱼的慢慢技术路

数据结构与算法笔试面试题整理

b.对每一对相邻的元素做同样的工作,从开始的第一对一致到结尾的最后一对,经过这一步,最后的元素将是最大值;

2913

扫码关注云+社区

领取腾讯云代金券