• 增强for循环(forearch)


    增强for循环是为了简化在遍历数组需要先获得数组的长度或者在遍历集合中的元素的时候需要使用迭代器的操作。

    引入时间:JDK1.5

    语法格式:

    for(数据类型 变量 :需要迭代的数组或者集合){

    }

    限制条件:
      增强for循环只能用在数组或实现了Iterable接口的集合类上。

    作用:

      是为了让你的代码变得简捷、和容易维护。

    代码示例如下:

     1 import java.util.HashMap;
     2 import java.util.HashSet;
     3 import java.util.Iterator;
     4 import java.util.Map;
     5 import java.util.Set;
     6 
     7 //自定义List
     8 class NickList implements Iterable<Object>{
     9     
    10     int index = 0;
    11     Object[] arr = new Object[10];
    12     
    13     public void add(Object obj) {
    14         arr[index++] = obj;
    15     }
    16     
    17     @Override
    18     public Iterator<Object> iterator() {
    19         return new Iterator<Object>() {
    20             int cursor  = 0;
    21 
    22             @Override
    23             public boolean hasNext() {
    24                 return cursor<index;
    25             }
    26 
    27             @Override
    28             public Object next() {
    29                 return (Object) arr[cursor++];
    30             }
    31         };
    32     }
    33     
    34 }
    35 
    36 public class DomeForEarch {
    37 
    38     public static void main(String[] args) {
    39         //普通数据进行遍历
    40         int[] num = {1,2,3};
    41         for (int i : num) {
    42             System.out.println("普通数组遍历结果:"+i);
    43         }
    44         //单列集合进行遍历
    45         HashSet<String> set = new HashSet<String>();
    46         set.add("张三");
    47         set.add("李四");
    48         set.add("王五");
    49         for (String name : set) {
    50             System.out.println("set遍历结果:"+name);
    51         }
    52         //map进行遍历
    53         HashMap<String, String> map = new HashMap<String,String>();
    54         map.put("110", "李四");
    55         map.put("210", "王五");
    56         map.put("310", "张三");
    57         //因为Map没有实现Iterable接口,所以要把Map转化为set来进行遍历
    58         Set<Map.Entry<String,String>> entrys = map.entrySet();
    59         for (Map.Entry<String,String> entry : entrys) {
    60             System.out.println("key:"+entry.getKey()+"value"+entry.getValue());
    61         }
    62         
    63         //自定义集合使用增强for循环
    64         NickList nickList = new NickList();
    65         nickList.add("张三");
    66         nickList.add("李四");
    67         nickList.add("王五");
    68         for (Object item : nickList) {
    69             System.out.println(item);
    70         }
    71     }
    72 }
    View Code

    需要注意的细节:

      1. 增强for循环底层也是使用了迭代器获取的,只不过获取迭代器由jvm完成,不需要我们获取迭代器而已,所以在使用增强for循环变量元素的过程中不准使用集合对象对集合的元素个数进行修改。
        2. 迭代器遍历元素与增强for循环变量元素的区别:使用迭代器遍历集合的元素时可以删除集合的元素,而增强for循环变量集合的元素时,不能调用迭代器的remove方法删除元素。
        3. 普通for循环与增强for循环的区别:普通for循环可以没有变量的目标,而增强for循环一定要有变量的目标。

  • 相关阅读:
    [Makefile] 递归编译的Makefile的实现
    python中出现 IndentationError:unindent does not match any outer indentation level
    Python3 编译中文字串报错解决方案
    linux下创建和删除软、硬链接
    免费的编程中文书籍索引
    starUML建立时序图
    UML 学习地址
    使用 Addr2line 将函数地址解析为函数名
    WIFI基本知识整理
    Ubuntu16.04 安装Python3.6 报错
  • 原文地址:https://www.cnblogs.com/nicker/p/6242764.html
Copyright © 2020-2023  润新知