代码如下:
for(int i = 0; i < max; i++) {
//do something
}
我在编程时经常使用这段代码,总是从0开始,使用间隔i++。实际上只有一个变量会改变(max)。
虽然这段代码无法更短,但考虑到它被经常使用,简化一下还是很有用的。
我知道在Python中有range函数,可以更快地输入。
在遍历集合时,可以使用增强型循环:
int[] numbers =
{1,2,3,4,5,6,7,8,9,10};
for (int item : numbers) {
System.out.println(item);
}
IntStream.range(min, max).foreach(i ->{})
。IntStream.range(min, max).foreach(() ->
不比 for(int i = 0; i < max; i++)
更短 :) - yshavitfor
循环,所以它们在这一点上非常自然,特别是当它们遵循标准的“0; < max; ++”模式时。 - yshavit由于有些人要求这样做,这里提供一些你可以做的事情,尽管这些是否真正更好还有待商榷,也是品味的问题:
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));
这些只是一些想法。如果经过深思熟虑,放置到一个公共库中并且一直使用,它们可以使常见的习惯性代码简洁易读。但如果使用不当,它们可能会将本来简单明了的代码变成难以管理的混乱。我怀疑任何两个开发者都不会完全同意应该在哪里划线。
有一种方法可以编写更短的for循环。
如果你关注“for”循环,你可能会发现这很有趣。
for(int i = -1; ++i < max;) {
//do something
}
注意在与最大值进行比较之前,计数器已经增加。
同时注意索引i从-1开始,而不是通常的0。
你可以使用这种方式来处理列表
普通模式:
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);
}
myList.forEach(System.out::println);
- Arvind Kumar Avinash
doInRange(int max, IntConsumer whatToDo)
。该函数可以接收一个最大值参数和一个执行操作的函数参数。 - tobias_k