有没有一种较短的方法来用Java编写for循环?

use*_*189 3 java syntax for-loop shorthand

该代码是

 for(int i = 0; i < max; i++) {
    //do something
 }
Run Code Online (Sandbox Code Playgroud)

在编程时,我会多次使用此精确代码,始终从0开始并使用间隔i ++。实际上只有一个变量会发生变化(最大值)

可能不会那么短,但是考虑到使用了多少代码,这将非常有帮助。

我知道在python中有一个range函数,可以更快地键入。

Pio*_*owy 8

如果你使用Java 8,你可以使用IntStream.range(min, max).foreach(i ->{})

  • OP 特别要求走一条更短的路。根据我的计算, `IntStream.range(min, max).foreach(() -&gt; ` 不短于 `for(int i = 0; i &lt; max; i++) ` :) (5认同)

Abd*_*d89 5

遍历集合时,可以使用增强型循环:

int[] numbers = 
 {1,2,3,4,5,6,7,8,9,10};

for (int item : numbers) {
   System.out.println(item);
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*rad 5

由于一些人要求这样的东西,这里有一些你可以做的事情,尽管这些是否真的更好是有争议的,也是一个品味问题:

void times(int n, Runnable r) {
    for (int i = 0; i < n; i++) {
        r.run();
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

times(10, () -> System.out.println("Hello, world!"));
Run Code Online (Sandbox Code Playgroud)

或者:

void times(int n, IntConsumer consumer) {
    for (int i = 0; i < n; i++) {
        consumer.accept(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

times(10, x -> System.out.println(x+1));
Run Code Online (Sandbox Code Playgroud)

或者:

void range(int lo, int hi, IntConsumer consumer) {
    for (int i = lo; i < hi; i++) {
        consumer.accept(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

range(1, 11, x -> System.out.println(x));
Run Code Online (Sandbox Code Playgroud)

这些只是一些想法。精心设计,放置在公共库中,并始终如一地使用,它们可以使通用的、惯用的代码简洁而易读。使用不慎,他们可能会将原本简单的代码变成难以管理的混乱。我怀疑任何两个开发人员都不会就应该划清界限的确切位置达成一致。