for循环的优化方式、循环的种类、使用及平替方案。

本篇文章主要围绕for循环,来讲解循环处理数据中常见的六种方式及其特点,性能。通过本篇文章你可以快速了解循环的概念,以及循环在实际使用过程中的调优方案。
作者:任聪聪
日期:2025年4月11日

一、循环的种类

1.1 默认有以下类型

原始 for 循环

	for(i = 0;i<10;i++){
   
    
    
	......TODO
	}

特点:固定、操作数据较为复杂、效率较低

增强 for 循环

	List<Integer> numArr= Arrays.asList(66,99,88);
	for (Integer num: numArr) {
   
    
    
	......TODO
	}

特点:固定、操作简单、效率稍好

while 循环

	List<String> numArr= Arrays.asList("没有bug","工作easy");
	while (index < numArr.size()) {
   
    
    
	           System.out.println(numArr.get(index));
	            index++;
	}

特点:固定、简单、适用于不确定执行结束次数的情况

do-while 循环

	List<String> numArr= Arrays.asList("没有bug","工作easy");
	do {
   
    
    
           if (index < numArr.size()) {
   
    
    
               System.out.println(numArr.get(index));
           }
           index++;
     } while (index < numArr.size());

特点:条件式的循环、操作简单、执行完毕结束(至少执行一次)

Iterator 循环

	List<String> numArr= Arrays.asList("没有bug","工作easy");
    IteratorString> iterator = numArr.iterator();
    while (iterator.hasNext()) {
   
    
    
        System.out.println(iterator.next());
    }

特点:操作简单、运行效果较好、数据复制和处理较好、手动控制迭代数据较为方便

Stream API 循环

	List<String> numArr= Arrays.asList("好运","幸运");
    numArr.stream().forEach(System.out::println);

特点:代码简洁、操作直接、并发运行、速度更快、适合数据的任意条件、复制、更新、删除等操作。

1.2 自定义递归函数方式

private static void recursivePrint(int current, int limit) {
        if (current < limit) {
            System.out.println("递归: " + current);
            recursivePrint(current + 1, limit); // 递归调用
        }
    }

特点:适合处理较为复杂的数据场景,可以无限套娃直到数据被完全处理或满足需求结束。

二、FOR循环平替方案

将如下代码实例,通过idea进行创建一个java 空项目,创建文件内容如下,即可体验和学习for循环平替方案的代码内容。

在这里插入图片描述

代码实例:

import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collector