在Java中编写for循环是否有更短的方法?

时间:2017-02-06 21:42:45

标签: java for-loop syntax shorthand

代码是

 for(int i = 0; i < max; i++) {
    //do something
 }

我编程时多次使用这个确切的代码,总是从0开始并使用i ++区间。实际上只有一个变量(最大)

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

我知道在python中有一个范围函数可以更快地输入。

6 个答案:

答案 0 :(得分:3)

循环收集时,您可以使用增强型循环:

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

for (int item : numbers) {
   System.out.println(item);
}

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

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

用法:

times(10, () -> System.out.println("Hello, world!"));

或者:

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

用法:

times(10, x -> System.out.println(x+1));

或者:

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

用法:

range(1, 11, x -> System.out.println(x));

这些只是一些想法。经过精心设计,放置在一个公共库中,并且使用一致,它们可以使常见的惯用代码简洁易读。不小心使用,他们可以将其他简单的代码变成无法控制的混乱。我怀疑任何两个开发人员都会就确切绘制线的位置达成一致。

答案 3 :(得分:0)

在许多情况下,最大值是未知的(来自文件,数据库等的数据)。 对我来说最好的是将所有内容加载到List(ArrayList等)并使用 for-each循环。在我看来,循环收集是短循环语法的最佳方法。

答案 4 :(得分:0)

我想到的快捷方式是: for(int i:val),对我来说效果很好。以下面的代码为例:

for (int i = 0; x < val.length; i++)
System.out.print(val[i] + ", ");

等同于

for (int i : val)
System.out.print(i + ", ");

经过一些研究后,我发现了这一点 link以及 EnhancedFor 的示例。这种写for循环看起来与写for in Linux Bash的方式非常相似。

答案 5 :(得分:0)

您可以将这种方式用于List的

普通模式:

List<String> myList = Arrays.asList(new String[]{"a","b","c","d","e","f"});
for (int i=0;i<myList.size();i++){
    System.out.println(myList.get(i));
}

短模式1:

List<String> myList = Arrays.asList(new String[]{"a","b","c","d","e","f"});
myList.forEach((node)->{
    System.out.println(node);
});

短模式2:

List<String> myList = Arrays.asList(new String[]{"a","b","c","d","e","f"});
for(String node: myList){
   System.out.println(node);
}