You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何改写IntStream遍历代码以移除未使用的number变量?

解决方案

你可以通过以下几种方式改写代码,避免使用未用到的变量:

1. 使用下划线作为未使用参数的占位符(Java 8适用)

在Java 8中,可用下划线_表示未使用的参数,明确告知编译器该参数无需被使用:

IntStream.range(0, 10).forEach(_ -> new Thread(r).start());

注意:Java 9及以后版本中,下划线_被列为保留关键字,不能再用作变量名,此写法在高版本Java中会报错。

2. 改用普通for循环

如果不需要依赖流式API,直接用传统for循环更直观,完全不存在未使用变量的问题:

public static void main(String[] args)  {
    UnsafeThreadClass counter = new UnsafeThreadClass();
    Runnable r = () -> {
        try {
            System.out.println(counter.getValue() + " : Thread - " +Thread.currentThread());
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    };
    // 替换原流式代码为普通循环
    for (int i = 0; i < 10; i++) {
        new Thread(r).start();
    }
}

3. 使用Stream.generate配合limit

通过生成包含10个线程实例的流,直接启动每个线程,全程不需要多余参数:

public static void main(String[] args)  {
    UnsafeThreadClass counter = new UnsafeThreadClass();
    Runnable r = () -> {
        try {
            System.out.println(counter.getValue() + " : Thread - " +Thread.currentThread());
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    };
    // 生成10个线程并启动
    Stream.generate(() -> new Thread(r))
          .limit(10)
          .forEach(Thread::start);
}

4. 简化lambda参数名(可选)

如果不想改动流式结构,也可以把参数名改成通用占位符(比如i),虽仍有参数,但能暗示其未被使用,代码更简洁:

IntStream.range(0, 10).forEach(i -> new Thread(r).start());

内容的提问来源于stack exchange,提问作者Punter Vicky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:40:26