精华内容
下载资源
问答
  • java中的增强型for循环
    千次阅读
    2021-10-11 15:43:02

    增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。他的内部原理其实是一个Iterator迭代器,所以再遍历的过程中,不能对集合中的的元素进行正山操作

    格式如下:
    for (元素的数据类型 变量: Collection集合or数组) {
        // 写操作代码 
    }
    注意:
    增强for循环必须有被遍历的目标,目标只能是Collection或者是数组,而且增强for循环只能用作遍历

    举例说明:
    1、使用增强for循环遍历集合

    public static void main(String[], args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("d");
        list.add("c");
        list.add("s");
        for(String s: list){
            System.out.println(s);
        }
    }

    2、使用增强for循环遍历数组

    public static void main(String[], args) {
        int[] array = {1, 2, 3, 4, 5};
        for(int i: array){
            System.out.println(i);
        }
    }
     

    增强型for循环定义如下:

    for(ElementType element: arrayName){};

    例1:

    int[] num = {1,2,3,4,5,6};

    for(int i: num){

      System.out.print(i);

    }

     例2:

    int[] num = {1,2,3,4,5,6};

    for(int i = 0; i < num.length; i++){

    System.out.print(num[i]);

    }

    例1是等价于例2的

    同理可有:

    List<Integer> intList = new ArrayList<Integer>();

    for (Integer i: intList) {

    System.out.print(i);

    }

    相对于for(;;)而言  增强for循环有两个好处:

    1.写起来简单

    2.遍历集合、容器简单

    例3:

    int[] a;

    a=new int[5];

    int b=0;

    for(int c:a)

    {

      a[c]=c;

      System.out.println(a[c]);

    }

     Arrays.sort(a);

     System.out.println(Arrays.toString(a));

    例4:

    int[] num;

    num=new int[5];

    int k=0;

    for(int j=0;j<num.length;j++)

    {

     num[j]=j;

    }

     System.out.println(Arrays.toString(num));

    }

    更多相关内容
  • 下面小编就为大家带来一篇浅谈java 增强型for循环 for each。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Java中增强for循环总结

    千次阅读 2021-02-26 10:19:36
    1 增强for循环增强for循环是for的一种新用法!用来循环遍历数组和集合。1.1 增强for的语法for(元素类型 e : 数组或集合对象) {}例如:int[] arr = {1,2,3};for(int i : arr) {System.out.println(i);}增强for的...

    1 增强for循环

    增强for循环是for的一种新用法!用来循环遍历数组和集合。

    1.1 增强for的语法

    for(元素类型 e : 数组或集合对象) {

    }

    例如:

    int[] arr = {1,2,3};

    for(int i : arr) {

    System.out.println(i);

    }

    增强for的冒号左边是定义变量,右边必须是数组或集合类型。例如上例中循环遍历的主浊arr这个int数组,增强for内部会依次把arr中的元素赋给变量i。

    1.2 增强for的优缺点

    只能从头到尾的遍历数组或集合,而不能只遍历部分;

    在遍历List或数组时,不能获取当前元素下标;

    增强for使用便简单,这是它唯一的优点了;

    增强for比使用迭代器方便一点!

    1.3 增强for原理

    其实增强for内部是使用迭代器完成的!也就是说,任何实现了Iterable接口的对象都可以被增强for循环遍历!这也是为什么增强for可以循环遍历集合的原因(Collection是Iterable的子接口)。

    但要注意,Map并没有实现Iterable接口,所以你不能直接使用增强for来遍历它!

    1 Map map = new HashMap();2 map.put("1", "one");3 map.put("2", "two");4 map.put("3", "three");5

    6 for(String key : map.keySet() ) {7 String value =map.get(key);8 System.out.println(key + "=" +value);9 }

    map.keySet()循环遍历map的所有键,map.keySet()返回的是Set类型,而Set是可以被增强for遍历的。

    一:传统的for循环和增强for循环的比较

    1 //传统的数组遍历

    2 String[] persons={"张三","李四","王五"};3 for(int i=0;i

    7 String[] persons={"张三","李四","王五"};8 for(String person:persons){9 System.out.println(person);10

    11 //传统的Iterator遍历集合

    12 List persons=new ArrayList();13 persons.add("张三");14 persons.add("李四");15 persons.add("王五");16 for(Iterator i=persons.iterator();i.hasNext();){17 String person=i.next();18 System.out.println(person);19 }20 //使用增强For循环遍历集合

    21 List persons=new ArrayList();22 persons.add("张三");23 persons.add("李四");24 persons.add("王五");25 for(String person:persons){26 System.out.println(person);27 }

    可以看到使用增强for循环使得代码变得短小而精炼的多,如果你觉得这点变化还体现不出来,可以忍受,那你可以试试嵌套for循环,就会感觉到增强for循环的好处了,这里就不贴代码了。

    二:定制自己的增强for循环

    众所周知,增强for循环是按数组或者集合的内在顺序输出的,如果我们想在遍历的时候定制行为怎么做呢?下面就以一个逆序输出的例子说明怎么定制自己的增强for循环。

    要想使用增强for循环,必须实现Iterable接口。

    ReverIterableClass.java

    1 importjava.util.Iterator;2

    3 /**

    4 * 一个简单的逆序输出增强for循环5 */

    6 public class ReverIterableClass implements Iterable{7 protectedT[] elements;8 publicReverIterableClass(T... elems) {9 this.elements=elems;10 }11 public Iteratoriterator() {12 return new Iterator(){13 private int current=elements.length-1;14 public booleanhasNext() {15 return current>-1;16 }17

    18 publicT next() {19 return elements[current--];20 }21

    22 public voidremove() {23 throw new UnsupportedOperationException("目前不支持删除操作");24 }25 };26 }27 public static voidmain(String[] args){28 ReverIterableClass iterableClass=new ReverIterableClass("a","b","c","d");29 for(String s:iterableClass){30 System.out.println(s);31 }32 }33 }

    在这个程序里我们定制了自己的输出行为--逆序输出,当然你也可以定义属于你自己的,只需要在next()函数里写处理代码即可。

    三:增强for循环的局限性

    不能在增强for循环中访问位置,例如下面的代码:

    String[] persons={"张三","李四","王五"};for(int i=0;i

    System.out.println(i+":"+persons[i]);

    }

    在增强for循环中你是得不到这个位置"i"的。

    例如还有我们常用的在组合sql语句,select字段的时候,当是最后一个字段时,不能加","的。

    1 String[] fields={"name","age","sex"};2 StringBuilder sql=new StringBuilder("select ");3 for(int i=0;i

    这在增强for循环中也是不能处理的。。

    还有对元素的删除,在增强for循环中也不能做到,但是使用传统的Iterator接口遍历时就可以使用他的remove()方法删除符合条件的元素。

    四:小结

    增强for循环有它的好处,比如简洁,代码优雅,如果能使用增强for循环,一定要优先使用。

    展开全文
  • Java增强 for 循环

    2022-06-22 17:58:14
    Java增强for循环

    Java 增强 for 循环

    Java5 所引入的一种主要用于数组的增强型for循环。(可用来遍历数组)

    Java 增强for循环语法如下:

    for(声明语句 : 表达式)
    {
    	//代码句子
    }
    

    声明语句:
    声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

    表达式:

    表达式是要访问的数组名,或者是返回值为数组的方法。

    Java文件代码:

    public class Test {
       public static void main(String[] args){
          int [] numbers = {10, 20, 30, 40, 50};
     
          for(int x : numbers ){
             System.out.print( x );
             System.out.print(",");
          }
          System.out.print("\n");
          String [] names ={"James", "Larry", "Tom", "Lacy"};
          for( String name : names ) {
             System.out.print( name );
             System.out.print(",");
          }
       }
    }
    

    在这里插入图片描述

    创建类,并创建出该类的数组,再用增强for循环遍历出

    创建类Employee(其子类:SalariedEmployee,HourlyEmployee,SalesEmployee,BasePlusSalesEmployee),并在Test2中创建一个Employee 数组,分别创建若干不同的Employee子类对象,通过使用Java增强for循环来遍历打印出来。

    package two;
    
    public class Test2 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Employee[] em = new Employee[4];//创建一个Employee 数组em
    		em[0]=new SalariedEmployee("张三",5,5000);//创建一个子类的对象
    		em[1]=new HourlyEmployee("李四",3,30,172);
    		em[2]=new SalesEmployee("王五",4,10000,0.3);
    		em[3]=new BasePlusSalesEmployee("王二",5,20000,0.03,5000);
    		for(Employee e:em) {
    			System.out.println(e.getName()+"的5月工资:"+e.getSalary(5)+"元");		
    		}
    
    	}
    
    }
    
    

    在这里插入图片描述

    展开全文
  • 在本篇文章里小编给大家整理是的关于Java中如何使用增强for循环的实例内容以及相关代码,需要的朋友们可以学习下。
  • Java中普通for循环增强for循环的对比

    Java中普通for循环和增强for循环的对比
     今天刷LeetCode时发现对于普通数组用普通for循环比用增强for each循环耗时少,因此在网上查找了资料之后决定自己通过反编译进行比较。
    测试代码
    反编译之后的结果:
    反编译之后的代码
     通过javap -v-c-l 反编译之后发现,增强for循环底层是通过迭代器iterator来实现的,next,hasNext();而普通for循环就是单纯根据下标进行访问。因此我们可以知道,当数据量大时在对底层通过数组实现的ArrayList进行普通for循环访问时,普通for循环是要比增强for循环快的。在对LinkedList用增强for循环遍历时要比用普通for循环快。
    我们先用十万数据量进行测试:
     测试代码:

    public static void main(String[] args) {
        List<Integer> arrayList = new ArrayList<Integer>();
        List<Integer> linkList = new LinkedList<Integer>();
        // 每个集合插入10万条数据
        for (int i = 0; i < 100000; i++) {
            arrayList.add(i);
            linkList.add(i);
        }
    
        int arry = 0;
    
        System.out.println("============遍历arrayList============");
    
        // 用for循环arrayList
        long forStartTime = System.currentTimeMillis();
        for (int i = 0; i < arrayList.size(); i++) {
            arry = arrayList.get(i);
        }
        long forEndTime = System.currentTimeMillis();
        System.out.println("for遍历需要:" + (forEndTime - forStartTime) + "毫秒");
    
    
        // 用增强for循环arrayList
        long forUpStartTime = System.currentTimeMillis();
        for (Integer in : arrayList) {
            arry = in;
        }
        long forUpEndTime = System.currentTimeMillis();
        System.out.println("增强for遍历需要:" + (forUpEndTime - forUpStartTime) + "毫秒");
    
    
        System.out.println("============linkList============");
    
        // 用for循环linkList
        long linkForStartTime = System.currentTimeMillis();
        int link = 0;
        for (int i = 0; i < linkList.size(); i++) {
            link = linkList.get(i);
        }
        long linkForEndTime = System.currentTimeMillis();
        System.out.println("for遍历:" + (linkForEndTime - linkForStartTime) + "毫秒");
    
        // 用增强for循环linkList
        long linkForeachStartTime = System.currentTimeMillis();
        for (Integer in : linkList) {
            link = in;
        }
        long linkForeachEndTime = System.currentTimeMillis();
        System.out.println("用增强for遍历需要:" + (linkForeachEndTime - linkForeachStartTime) + "毫秒");
    
    }
    

    十万数据量结果:
    十万数据量结果
    插入百万数据量结果:
    插入百万数据量结果对比
     从上面结果可以看出,插入10万数据量时,对于ArrayList来说,普通for循环和增强for循环时间都是3ms,当数据上升到百万时,普通for循环要比增强for循环快;对于LinkedList来说,10万数据量时,普通for循环比增强for循环慢了很多个数量级。当增加到百万数据量时,增强for循环所使用的时间只用了10ms,但是普通for循环的时间就很长了,已经达到1268秒以上。
     既然这次讨论了普通for循环和增强for循环,下次我会继续比较普通for、增强for以及java8 新增的foreach。

    展开全文
  • NULL 博文链接:https://rensanning.iteye.com/blog/2003205
  • 当我在使用Java增强型for循环时 public class Text { public static void main(String[] args) { int a[] = new int[]{1, 2, 3, 4, 5}; for(int i = 0; i < a.length; i++){ System.out.print(a[i]+","); ...
  • Java实用技巧---增强for循环

    千次阅读 2022-02-13 09:45:53
    1、泛型接口 把泛型定义在接口上 格式:public interface 接口名<泛型类型1…>...2、增强for循环概述:简化数组和Collection集合的遍历 语句定义格式: for(元素数据类型 变量名(自定义)..
  • 增强 For 循环

    2021-08-21 19:37:49
    也成为【for each】循环,是JDK1.5版本以后出来的一个高级for循环,专门用来遍历数 组和集合的,它的内部原理其实就是iterator迭代器,所以在遍历过程,不能对集合的元素 进行增删操作。 二、格式 for( 元素...
  • java中增强for循环

    2022-02-12 16:14:21
    /*增强for循环 * 语法格式: * for(元素类型 变量名: 数组或集合) { * System.out.println(变量名); * } * 缺点:没有下标,在需要使用下标的循环中不建议使用*/ public class ForEachTest01 { public static void ...
  • 刷题时想用增强for循环来给初始数组赋值,结果发现了问题。所以记录学习一下增强for循环的用法。 1. 增强for循环 增强for循环是for的一种新用法!用来循环遍历数组和集合。 2. 语法 for (元素类型 e : 数组或...
  • Java基础之增强型for循环

    万次阅读 多人点赞 2018-05-07 10:50:06
    增强型for循环语法:for(ElementTypeelement:arrayName){}; 增强for循环的原理 增强型for循环注意事项 增强型for循环语法:for(ElementTypeelement:arrayName){}; 举个例子:(1) int[]numArray={1,2,3,4,5,6}; ...
  • 这是个很好的强化功能,因为这是for循环很常见的用途。我们会在讨论非数组的集合时再次看到加强版的for循环。 for (String name : nameArray) { } 1、String name--声明会带有数组单一元素的循环变量,数组元素...
  • 增强for使用增强for循环的时候不能使用集合删除集合的元素; 增强for循环不能使用迭代器的方法,例如remove()方法删除元素; 与普通for循环的区别:增强For循环有遍历对象,普通for循环没有遍历对象; 对于实现...
  • 增强型for循环 和普通for循环一样 增强型for循环 优点主要体现在集合,随便举个例子 比如对 set 的遍历 一般是迭代遍历
  • 增强型for循环与普通for循环的区别

    千次阅读 2021-02-27 19:57:59
    增强型for循环与普通for循环的区别总结: 1、增强型for循环书写简洁,遍历数组时不需要下标,主要用于数组或集合的遍历,数组或集合遍历完毕时循环会结束执行。 2、普通for循环需要三个条件,包括循环变量、循环...
  • [Java基础] 之增强型for循环 前言: 增强型for循环只能够用于取数组的值,而不能用于修改数组的值,增强型for循环在遍历一个数组的时候会更加快捷。 用法: int array[]=new int[]{1,2,3,4,5}; for (int ...
  • Java for循环增强

    2021-12-13 22:12:32
    java5引进了一种主要用于数组和集合的增强型for循环。我们这里先做了解就可以。 增强型for循环语句如下: for(声明语句:表达式){ //代码句子 } 注解:声明语句:声明新的局部变量,该变量的类型必须和数组...
  • java-增强型for循环

    2019-01-23 10:10:29
    for(声明语句:表达式) { 代码语句 } 声明语句的局部变量必须与表达式的类型一致。 ...public class JavaFor { ...使用增强for循环&quot;); String[] fruits ={&quot;Apple&quot;,...
  • Java 如何使用增强for循环增强型for循环在遍历一个数组的时候会更加快捷步骤 1 : 增强型for循环注:增强型for循环只能用来取值,却不能用来修改数组里的值public class HelloWorld {public static void main...
  • Java——增强型for循环

    2019-01-08 15:47:26
    package day04;... * 新循环,又名:增强for循环for each * 从java1.5(5.0)后推出的新特性 * 新循环不能代替传统循环的工作 * 新循环只用来遍历集合或数组 * @author Administrator * */ publ...
  • 增强for循环更有效率有点过分简单。它可以是,但在许多情况下,它几乎完全一样的老校园循环。首先需要注意的是,对于集合,增强for循环使用了一个迭代器,所以如果你使用迭代器手动迭代一个集合,那么你应该具有...
  •     从开始接触Java编程时,简单的循环遍历(for、while、do…...其实就是我没有掌握java jdk5.0新增的特性而已,接下来对增强型for循环做详细的说明与介绍。 目录1. 定义2. 遍历集合3. 遍历数组4. 区分普通for循
  • 增强型for循环被设计出来就是为了遍历数组或者是集合的,所以在循环中都会指定一个数组或者是集合。为了方便程序员编码,增强型for循环...下面来看一个简单例子:在这个增强型for循环中,指定的数组叫做array。每次...
  • 增强型for循环使用起来比较方便,代码也比较简单,如果只是操作集合元素的而不使用索引的话,建议用此方法。 对于普通for循环,如果需要使用索引进行其它操作的话,建议用这个。 详细来说: 1,区别: ...
  •  For-Each循环也叫增强型for循环,或者叫foreach循环。  For-Each循环是JDK5.0的新特性(其他新特性比如泛型、自动装箱等)。  For-Each循环的加入简化了集合的遍历。 语法如下: [java] view plain ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,529
精华内容 11,811
关键字:

java中的增强型for循环