Java中增强for循环代码示例

 更新时间:2023年10月26日 15:51:10   作者:zgl懒羊羊  
这篇文章主要给大家介绍了Java中增强for循环的相关资料,for/in循环就是JDK5.0中所谓的增强For循环,它能对数组和集合进行遍历,使用它会使用你的代码短小而精炼的多,需要的朋友可以参考下

增强for循环(Enhanced for loop),也被称为for-each循环,是一种简化遍历数组和集合元素的语法结构。它可以遍历数组、集合或其他实现了Iterable接口的数据结构。

增强for循环的语法结构如下:

for (元素类型 变量名 : 需要遍历的数组或集合) { // 进行操作 }

其中,元素类型表示数组或集合中元素的类型,变量名表示每次迭代中获取到的当前元素的值。在循环体中,可以直接使用变量名访问当前的元素,并执行相应的操作。增强for循环的优点是简洁、易读,并且能够避免索引操作,适用于不需要修改数组或集合元素的情况

以下是一个示例,展示如何使用增强for循环遍历数组和集合:

//数组
int[] numbers = {1, 2, 3, 4, 5}; 
for (int number : numbers) { 
    System.out.println(number); 
} 
 
//集合
ArrayList<String> names = new ArrayList<>(); 
names.add("测试"); 
names.add("你好"); 
 
for (String name : names) { 
    System.out.println(name); 
}

在上述示例中,第一个循环使用增强for循环遍历整型数组numbers,并将每个元素打印出来。第二个循环使用增强for循环遍历字符串类型的ArrayList集合names,同样将每个元素打印出来。需要注意的是,增强for循环不能对集合进行修改(添加、删除等)。如果需要在循环过程中对集合进行操作,仍然需要使用迭代器或传统的for循环。

增强for循环适用于只需要访问数组或集合中的每个元素,并且不需要索引或迭代器的情况。它提供了一种简洁而直观的方式来遍历数组或集合中的元素。需要注意的是,增强for循环是只读的,即不能通过它来修改数组或集合中的元素。如果需要修改元素,仍然需要使用传统的for循环或迭代器来完成。

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

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

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

import java.util.Iterator;

/**
 * 一个简单的逆序输出增强for循环
 * @author 
 *
 */
public class ReverIterableClass<T> implements Iterable<T> {
protected T[] elements;
public ReverIterableClass(T... elems) {
this.elements=elems;
//this.object=(T[])new Object[ts.length];
}
public Iterator<T> iterator() {
return new Iterator<T>(){
private int current=elements.length-1;
public boolean hasNext() {
return current>-1;
}


public T next() {
return elements[current--];
}


public void remove() {
throw new UnsupportedOperationException("目前不支持删除操作");
}
};
}
public static void main(String[] args){
ReverIterableClass<String> iterableClass=new ReverIterableClass<String>("a","b","c","d");
for(String s:iterableClass){
System.out.println(s);
}
}
}

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

总结

到此这篇关于Java中增强for循环代码示例的文章就介绍到这了,更多相关Java 增强for循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中@ConfigurationProperties实现自定义配置绑定问题分析

    Java中@ConfigurationProperties实现自定义配置绑定问题分析

    这篇文章主要介绍了@ConfigurationProperties实现自定义配置绑定问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • MyBatis版本升级导致OffsetDateTime入参解析异常问题复盘

    MyBatis版本升级导致OffsetDateTime入参解析异常问题复盘

    这篇文章主要介绍了MyBatis版本升级导致OffsetDateTime入参解析异常问题复盘,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • SpringBoot+Redis+Lua防止IP重复防刷攻击的方法

    SpringBoot+Redis+Lua防止IP重复防刷攻击的方法

    本文主要介绍了SpringBoot+Redis+Lua防止IP重复防刷攻击的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • JAVA异常处理捕获与抛出原理解析

    JAVA异常处理捕获与抛出原理解析

    这篇文章主要介绍了JAVA异常处理捕获与抛出原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Spring 代理 Bean 获取不到原始 Bean 对象注解解决方法

    Spring 代理 Bean 获取不到原始 Bean 对象注解解决方法

    这篇文章主要介绍了Spring 代理 Bean 获取不到原始 Bean 对象注解解决方法,文章围绕主题相关资料展开详细介绍,需要的小伙伴可以参考一下
    2022-04-04
  • dubbo服务引用之创建Invoker流程详解

    dubbo服务引用之创建Invoker流程详解

    这篇文章主要为大家介绍了dubbo服务引用二之创建Invoker流程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 一篇文章弄懂Mybatis中#和$的区别

    一篇文章弄懂Mybatis中#和$的区别

    mybatis为我们提供了两种支持动态sql的语法#{}以及${},两者都是动态的向sql语句中传入需要的参数,下面这篇文章主要给大家介绍了如何通过一篇文章弄懂Mybatis中#和$区别的相关资料,需要的朋友可以参考下
    2021-12-12
  • 从Java到JSON一起探索Jackson的魔力

    从Java到JSON一起探索Jackson的魔力

    Jackson是一个用于处理JSON数据的开源Java库,这篇文章主要为大家介绍了Java是如何利用Jackson处理JSON数据的,感兴趣的小伙伴可以了解一下
    2023-05-05
  • Java线程中的Timer和TimerTask原理详解

    Java线程中的Timer和TimerTask原理详解

    这篇文章主要介绍了Java线程中的Timer和TimerTask原理详解,Timer和TimerTask成对出现,Timer是定时器,TimerTask是定时任务,换句话说,定时任务TimerTask是给定时器Timer执行的具体任务,需要的朋友可以参考下
    2023-10-10
  • SpringDataRedis入门和序列化方式解决内存占用问题小结

    SpringDataRedis入门和序列化方式解决内存占用问题小结

    spring-data-redis是spring-data模块的一部分,专门用来支持在spring管理项目对redis的操作,这篇文章主要介绍了SpringDataRedis入门和序列化方式解决内存占用问题,需要的朋友可以参考下
    2022-12-12

最新评论