Java增强for循环

 

在用增强for循环进行集合遍历之前没有判断集合是否为null,则会出现空指针异常。

判断它不为null并且size>0才是不为空,  if(list != null && list.size() > 0){ 增强for循环 }

==========================================

Java增强for循环

1、 for循环的一种,简化了数组和集合的遍历,可以用来替代迭代器

2、 格式:

 a) for(元素数据类型 变量:数组或者Collection集合){

             使用变量即可

       }

 b) 实例在下面

3、 弊端

 a) 增强for的目标不能是null

 b) 解决:对增强for的目标先进行不为null的判断

 

注意:

元素数据类型可以是 String 等数据类型,也可以是一个DO实体类




if (list != null && list.size() > 0){
                for (SyncPickingCenterDO i : list) {
                    // System.out.println("i:" + i);
                    System.out.println(i.getWareHouses());

                    i.setGmtCreate(new Date());


                    httpRequestRepository.saveAndFlush(i);

                    WareHousesDO wh = new WareHousesDO();
                    List<WareHousesDO> whList = i.getWareHouses();
                    // System.out.println("whList:" + whList);
                    if (whList != null && whList.size() > 0){
                        for (WareHousesDO j : whList) {
                            j.setCenterId(i.getId());
                            httpRequestRepository.save(j);
                        }
                    }

                }
            }

 

 

 

package test10_collecton;
//增强for实例

import java.util.ArrayList;
import java.util.Collection;

public class ForDemo {
    public static void main(String[] args) {
        
        //字符串数组
        String []str= {"zfliu","96"};
        
        for(String s:str) {
            System.out.println(s);
        }
        
        System.out.println("-------------------");
        
        //集合
        Collection <String> c=new ArrayList <String>();
        c.add("zfliu");
        c.add("HelloWorld");
        for(String x : c) {
            System.out.println(x);
        }
        
        
    }
}

部分原创,其他来自以下
--------------------- 
原文:https://blog.youkuaiyun.com/zfliu96/article/details/83545348 

版权声明:本文为博主原创文章,转载请附上博文链接!

 

<think>好的,我现在要处理用户关于Java增强for循环用法的问题。首先,我需要回顾一下用户的问题,确保我准确理解他们的需求。用户问的是“Java enhanced for loop usage example”,也就是想了解Java增强for循环的具体使用示例。 接下来,我需要回忆增强for循环的基本语法和用法。增强for循环,也称为for-each循环,是在Java 5中引入的,主要用于简化数组和集合的遍历。它的语法结构是for (元素类型 变量名 : 集合或数组) { ... }。相比传统的for循环,它不需要显式地使用索引或迭代器,代码更简洁,可读性更高。 然后,我应该考虑用户可能的实际需求。他们可能想知道如何在不同的数据结构中使用增强for循环,比如数组、List、Set,甚至是自定义对象。此外,用户可能还想了解增强for循环的局限性,比如不能修改集合中的元素,或者在遍历时不能删除元素等注意事项。 接下来,我需要组织回答的结构。首先给出基本语法,然后分点列出不同数据结构的示例,比如数组、List、Set、Map(不过Map需要用entrySet或keySet来遍历),最后提到注意事项。每个示例部分都需要具体的代码示例,并且用代码块展示,这样用户可以直接看到实际的用法。 还要注意用户提到的系统级指令,比如所有行内数学表达式用$...$,但这里可能用不上。但需要确保代码使用正确的格式,比如用三个反引号包裹代码块,并指定语言为java。另外,要生成相关问题,可能需要包括性能、底层原理、与传统循环的区别等。 然后,检查是否有相关的引用可以支持回答。查看用户提供的引用,引用[1]提到了使用Lambda函数的例子,可能与Java 8的流有关,但增强for循环是更早的特性。引用[2]关于反射,引用[3]关于代码风格,引用[4]关于finally块,引用[5]关于推荐系统,似乎都不直接相关。所以可能不需要引用这些内容,但需要确认用户是否有之前的对话需要参考。根据问题,用户之前的问题可能涉及Java循环结构,但当前问题单独关于增强for循环,所以可能不需要引用之前的回答,除非有相关内容。 接下来,需要确保回答符合用户的要求:结构清晰,分步骤说明,真实可靠。可能需要提到增强for循环的优缺点,比如简化代码但缺乏索引访问,以及在遍历时修改集合会抛出ConcurrentModificationException异常的情况。 最后,生成相关问题。考虑用户可能的后续问题,比如与传统for循环的区别、性能比较、如何避免ConcurrentModificationException、在自定义对象中的使用等。 总结回答的结构: 1. 基本语法介绍 2. 不同数据结构的示例(数组、List、Set、Map) 3. 自定义对象的遍历 4. 注意事项(无法修改集合、并发修改异常) 5. 相关问题 在编写代码示例时,确保语法正确,比如遍历Map时使用entrySet(),自定义类实现Iterable接口的例子可能需要简化,因为实现迭代器对于新手可能较复杂,但可以给出一个简单的例子。 检查是否覆盖了所有关键点,并且语言简洁明了,符合中文表达习惯。避免使用过于专业的术语,但必要时需准确使用。</think>### Java增强for循环用法详解 增强for循环(Enhanced for-loop)是Java 5引入的特性,用于简化数组和集合的遍历操作。其语法为: ```java for (元素类型 变量名 : 集合或数组) { // 操作代码 } ``` #### 一、基本用法示例 1. **遍历数组** ```java int[] numbers = {1, 2, 3, 4, 5}; for (int num : numbers) { System.out.println(num); } ``` 2. **遍历List集合** ```java List<String> fruits = List.of("Apple", "Banana", "Orange"); for (String fruit : fruits) { System.out.println(fruit); } ``` 3. **遍历Set集合** ```java Set<Integer> scores = Set.of(90, 85, 95); for (int score : scores) { System.out.println(score); } ``` 4. **遍历Map集合** 需通过`entrySet()`或`keySet()`转换: ```java Map<String, Integer> ages = Map.of("Alice", 25, "Bob", 30); for (Map.Entry<String, Integer> entry : ages.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } ``` #### 二、自定义对象遍历 若需遍历自定义类对象,需实现`Iterable`接口: ```java class Student implements Iterable<String> { private List<String> courses = List.of("Math", "Java", "Physics"); @Override public Iterator<String> iterator() { return courses.iterator(); } } // 使用示例 Student student = new Student(); for (String course : student) { System.out.println(course); } ``` #### 三、注意事项 1. **只读遍历** 增强for循环不能直接修改集合结构(如删除元素),否则会抛出`ConcurrentModificationException`[^4] 2. **无索引访问** 无法通过索引直接定位元素,需传统for循环替代 3. **性能特性** 对数组的遍历性能与传统for循环相同,但对`LinkedList`等结构可能略慢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值