原创

增强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 条评论
登录 后参与评论

相关文章

  • 反射类的方法

    关于对类的方法的反射。其中包括静态方法,普通方法,带参数的方法,以及最重要的String[]数组的方法的反射以及需要注意的细节问题,都是基础,所以请各位多多包涵...

    MonroeCode
  • 反射类的字段

    @Test public void test6() throws Exception { Person person = new...

    MonroeCode
  • maven环境快速搭建

    ---------------准备工作------------- Jdk  1.5以上java开发环境。 Eclipse IDE 一个。 Maven 3.0.3...

    MonroeCode
  • 第19节 for循环语句

    for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环

    小尘哥
  • 【小家java】剖析for、while、foreach、标签循环语句的控制( break,continue,return )

    java一共提供了3中循环语法:for循环(含增强for循环)、while循环、do…while循环。java8之后提供了基于stream的foreach循环,...

    YourBatman
  • 房上的猫:for循环,跳转语句与循环结构,跳转语句进阶

    一.for循环  1.定义:   for循环语句的主要作用是反复执行一段代码,直到满足一定条件为止  2.组成部分:   (1)初始部分:设置循环的初始状态  ...

    房上的猫
  • 从一个多层嵌套循环中直接跳出

    Java中如何从一个多层嵌套循环中退出,例如下面,有两个循环,break只能退出一个for循环,不能直接跳过第二个for循环

    硬核编程
  • Java学习笔记3-程序控制

    从控制台获取输入,需要导入Java中的java.util.Scanner类,通过读取对应类型来获取不同类型输入;

    村雨遥
  • JAVA中for与while关于内存的细节问题

    JAVA的程序结构有顺序结构,循环结构,分支结构,以及跳转结构,而循环结构里经常用到的无外乎有以下几种:for循环,while循环,以及do-whil...

    朱季谦
  • 深入理解Feign之源码解析

    什么是Feign Feign是受到Retrofit,JAXRS-2.0和WebSocket的影响,它是一个jav的到http客户端绑定的开源项目。 Feign的...

    方志朋

扫码关注云+社区

领取腾讯云代金券