zoukankan      html  css  js  c++  java
  • 增强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循环一定要有变量的目标。

  • 相关阅读:
    【python35小工具】b站弹幕保存
    w7 python35 输出中文乱码解决
    【python】版本35 正则-非库-爬虫-读写xlw文件
    【python小工具】我在bilibili个人资料里控制家里的电脑
    【python小工具】linux 低权限密码记录 提权小套路
    [学习交流]博客园 cnblog 添加github链接和自定义美化学习
    cp2102 驱动 win7x64 -2018
    基于Vue实现可以拖拽的树形表格(原创)
    不起眼的 z-index 却能牵扯出这么大的学问
    彻底搞懂CSS伪类选择器:is、not
  • 原文地址:https://www.cnblogs.com/nicker/p/6242764.html
Copyright © 2011-2022 走看看