27、增强for循环

增强for循环

使用增强for循环可以简化数组和Collection集合的遍历,格式:

for(元素数据类型 变量 : 数组或者Collection集合) {
        使用变量即可,该变量就是元素
    }

例:

package com.sutaoyu.list;

import java.util.ArrayList;
import java.util.List;

public class list_test_11 {
    public static void main(String[] args) {
        List<String> list = new ArrayList();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        //增强for循环,优点是可以简化遍历
        for(String s : list) {
            System.out.println(s);
        }
    }
}

集合框架中的三种迭代方式删除数据

  • 普通for循环,可以删除,注意让索引做自减运算
  • 迭代器,可以删除,但是必须使用迭代器自身的remove方法,否则会出现并发修改异常
  • 增强for循环不能删除
package com.sutaoyu.list;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class list_test_11 {
    public static void main(String[] args) {
        List<String> list = new ArrayList();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        //1,普通for循环删除,索引做自减运算
        for(int i = 0;i < list.size();i++) {
            if("b".equals(list.get(i))) {
                list.remove(i);
                i--;
            }
        }

        //2,迭代器删除
        for(ListIterator<String> iter = list.listIterator();iter.hasNext();) {
            if("b".equals(iter.next())) {
                iter.remove();
            }
        }

        //3,增强for循环不能删除,ConcurrentModificationException
        for(String string : list) {
            if("b".equals(string)) {
                list.remove("b");
            }
        }

        System.out.println(list);
    }
}

原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/10132161.html

时间: 2024-11-25 20:41:30

27、增强for循环的相关文章

增强for循环

http://m.blog.csdn.net/article/details?id=53743016 //String 数据的类型 //name 每次循环后将数据放入名为name的变量中 //names 被循环的数组或集合 foreach(String name : names){ syso(name); } for循环中的循环条件中的变量只求一次值!具体看最后的图片 ?foreach语句是java5新增,在遍历数组.集合的时候,foreach拥有不错的性能. ?foreach是for语句的简化

使用增强for循环遍历集合的时候操作集合的问题?

1 // 遍历一个list 2 public static void printList(List<String> list){ 3 for (String string : list) { 4 list.add("eeee"); // 运行错误 5 System.out.println(string); 6 } 7 System.out.println("遍历中: "+list); 8 } 9 异常信息如下: 10 Exception in threa

java中的Iterator与增强for循环的效率比较

最近在优化代码时遇到了这个问题:Iterator与增强for循环到底哪个效率高?之前在学习的时候,好像记着老师说过遍历集合(如list)时,使用iterator好像正规一些,因为是专用的,但是运行效率问题确实不曾考虑,今天做了一个实验:对两者进行了简单的比较,得出的结论是:增强for循环运行效率更高一些.但是我不确定这是否会代表全部情况,这里仅仅记录一下,做个参考,后期有新的认识再来补充,欢迎大家批评指正. 1 public static void main(String[] args) { 2

java关于集合的遍历与增强for循环(foreach)的使用

java集合类的使用可以说是无处不在,总的我们可以将之分为三大块,分别是从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型集合. 许多情况需要我们遍历出集合中的元素,并做相应的处理. 下面对各种类型的集合的遍历做一些总结,关于增强for循环,需要注意的是,使用增强for循环无法访问数组下标值,对于集合的遍历其内部采用的也是Iterator的相关方法.如果只做简单遍历读取,增强for循环确实减轻不少的代码量. 关于List与Set类型集合的遍历: 1 import

java基础40 增强for循环(也叫foreach循环)

增强for循环是jdk1.5出现的新功能 1.增强for循环的作用 简化了迭代器的书写格式(注意:增强for循环底层还是使用了迭代器遍历) 2.增强for循环的格式 for(数据类型 变量名:遍历的目标){ } 3.增强for循环的适用范围 如果实现了 Iterable 接口或者数组对象都可以使用增强for循环 1 package com.dhb.pattern; 2 3 import java.util.Iterator; 4 5 /** 6 * @author DSHORE / 2018-6

java之增强for循环以及几种删除集合元素的方式

1 public class Demo1_Foreach { 2 3 /* 4 * 增强for循环格式: 5 * for(元素数据类型 变量 : 数组或者Collection集合){ 6 * 使用变量即可,该变量就是元素 7 * } 8 * 实质:底层依赖的是迭代器 9 */ 10 public static void main(String[] args) { 11 12 //demo1(); 13 List<String> l = new ArrayList<>(); 14 l

Java Iterator和增强for循环 for each详解

Iterator是Java中的一个迭代器接口(Interface),用来提供标准的Java迭代器 Iterator支持泛型因为集合(Collection)类可以装入的类型是不确定的,从集合中取出的都是Object类型,加入泛型,就是告诉编译器确定要装入的对象类型,取值时就无需强制转换了. for each 是 Java 5 中新增的一个循环结构,本质上是一个Iterator,特点是可以用来遍历集合元素而不用考虑集合下标. 综合实例: package net.csdn.shf4715; impor

Java学习——增强for循环、switch

增强for循环 Java5引入了一种主要用于数组的增强型for循环. 例子 public class ForTest { public static void main(String args[]){ int [] numbers = {1, 3, 5, 7, 2, 4, 6, 8}; for (int x: numbers){ System.out.print(x); System.out.print(","); } System.out.println(); String [] n

Java5新特性之静态导入、可变参数、增强for循环、自动拆装箱

JDK1.5已经发布很长时间,之所以还拿出来是因为它增加了很多个重要的特性,使用这些特性有助于我们简化开发,编写的代码更加简洁清晰安全,主要有以下几个特性: ?  静态导入 ?  可变参数 ?  增强for循环 ?  自动拆装箱 ? 泛型 ? 枚举 由于泛型.枚举内容比较多,也最重要,之后单拿出来讲.这里先介绍前面四个简单而又实用的小特性. 1. 静态导入 所谓"静态导入"只不过是在普通的import语句中加入关键字static,例如: ?  非静态导入:import java.lan