zoukankan      html  css  js  c++  java
  • foreach 和 for 的区别

    foreach的书写格式:

        for(元素类型  变量名称 : 遍历数组(集合)(或者能进行迭代的)){

        语句

       }

    foreach适用于循环次数未知,或者计算循环次数比较麻烦情况下使用效率更高,但是更为复杂的一些循环还是需要用到for循环效率更高。

      主要是增强了for循环,在遍历数组,集合上会更加方便

      可以遍历的内容:数组,Collection ----直接遍历  Map -------间接遍历

      foreach是for循环的简化版本,但是不能完全替代for循环,

    public static void main(String[] args) {   
    List
    <String> arr = new ArrayList<String>(); //添加数据到List数组 arr.add("你好"); arr.add("我好"); arr.add("他也好"); arr.add("哈喽");

    /*
    * 原理:当执行增强for循环时,会从数组中自动按照顺序取值,取出的值会放入前面的变量中,
    * 本次循环使用的就是当前的变量结束后,自动开始第二次变量,会自动从数组中取出第二个元素,
    * 再次放入前面的变量中依次进行下去,直到将数组中的元素取完,自动停止.
    */

    //foreach循环
      for(String str:arr){   //这里的str就是获取每次循环的arr中的值
          System.out.println(str)  ;  //就相当于  String  str  = arr[i];
         }    
    }

    Map集合中使用foreach来遍历

    package start;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    public class Demo1 {
        public static void main(String[] args){
            Map<String,String> map = new HashMap<String, String>();
            map.put("你好啊","杰瑞");
            map.put("你好哦","汤姆");
            map.put("你好呀","汤姆哥");
            map.put("你好嗨","杰瑞弟");
            //使用entry.set方法
            //使用foreach循环遍历集合
        for(Map.Entry<String,String> entry: map.entrySet()){
            //这里的Map.Entry<String, String>就是一个数据类型     用来表示键值对的类型
            System.out.print("key:" + entry.getKey());
            System.out.println("  value:" + entry.getValue());
    
            }
            //亦可以使用keySet方法
            //得到set
            Set <String> set = map.keySet();
            //使用增强for遍历
            for (String key : set) {
                System.out.println("key:"+key+"    value"+map.get(key));
            }
        }
    }

      foreach简化了流程,提高了代码的可读性和安全性。在遇到数组或者集合索引的情况下,foreach就不好用了。而且foreach一般都是结合泛型使用。

      foreach只是来循环遍历集合或者数组的时候会方便点,for则在复杂的循环中使用效率更高.

  • 相关阅读:
    3D集合图元:最小边界框/包围盒(boundingbox)
    vs2012下 error4996
    将自己的类封装为lib的方法
    3D特征:关于HFM和HBB
    C++的Matlab接口
    BigDataMini导论
    vs2012编译boost_1_54_0
    RGB_D_开发征程(使用Kinect)
    **PCD数据获取:Kinect+OpenNI+PCL对接(代码)
    PCL:全程详解 VS2010+PCL配置
  • 原文地址:https://www.cnblogs.com/yimting/p/9917392.html
Copyright © 2011-2022 走看看