减少使用你代码你的for循环
**首先,你需要for循环做什么?**
1.遍历集合
2.运行算法
对于算法,for循环可能是合适的。看下列算法,检查数字是否为5的幂:
Integer number = 91;
for(;number>1;number/=5)
return number == 1;
在这里,for循环是合适的。这是一个非常简单的示例。但是对于大多数开发人员而言,在他们的日常工作中,遇到的情况大多比较复杂,大多数时候,单纯的for遍历循环已经不适合。下面我们来看一些代码的示例。
**遍历Java中的集合**
我们先来定义一个简单的集合,并往里面添加元素:
List<String> language = new ArrayList<>();
language.add("java");
language.add("c++");
language.add("c#");
language.add("Python");
language.add("PHP");
language.add("javascript");
有很多方法可以对这个集合进行遍历,运行算法。我们先从最古老的迭代器开始:
Iterator<String> iterator = language.iterator;
while(iterator.hasNext()){
System.out.println(iterator.next());
}
Iterator接口中定义了三个方法:
boolean hasNext();
E next();
void remove();
这种代码使Java在冗长性上享有声誉。
这次使用经典的索引for循环:
for(int i=0;i<language.size();i++){
System.out.println(language.get(i));
}
这种结构非常熟悉并且易于遵循,以至于大多数人不会考虑更好的东西。但是在Java 8以后我们可以使用forEach函数来进行简化。
借助Java 8,我们可以使用forEach函数:
language.forEach(item -> System.out.println(item));
我们可以进一步简化它,在我们只是迭代数组时,这样会使得代码很简洁:
language.forEach(System.out::println):
**如何使用Java Streams?**
一旦停止在Java中编写如此多的for循环,forEach就成了你的第二选择,那么你应该看看Java中的Stream。
例如,使用类似的语法,你可以轻松选择是有以“J”开头的编程语言:
language.stream().filtrer(item -> item.startsWith("J"))
.forEach(System.out::println);