请停止编写这么多的for循环!
在这篇文章中,我想和你一起回到基础知识,并讨论 java 中的 for 循环。老实说,我正在为自己写这篇博客文章,因为我也会这样做。从 java 8 开始,我们不必在 java 中编写太多 for 循环!我希望这篇文章将使你的代码更易于阅读和编写。
你需要 for 循环做什么?
一般地说,for 循环执行两类任务:
- 遍历集合
- 运行算法
对于算法,for 循环可能是合适的。看一下此算法,检查数字是否为三的幂:
double number = 81; for(; number > 1; number /=3); return number == 1;
在这里,for 循环是合适的。这是一个非常简单的示例,你可以想象,使用更困难的算法会变得更加棘手。
对于大多数开发人员而言,在他们的日常工作中,这种情况很少。大多数时候,我们使用 for 循环遍历集合。让我们看一下该代码的一些示例。
遍历 java 中的集合
我们首先来定义一个 list
有很多方法可以对其进行迭代。让我们从相当古老的迭代器方法开始: 这种代码使 java 在冗长性上享有应有的声誉。 这次尝试使用经典的索引 for 循环: 嗯,这有点简单,但是在 java 5 之后,我们可以这样处理循环: 这是大多数开发人员陷入困境的地方。这种结构非常熟悉并且易于遵循,以至于我们大多数人都不会去考虑更好的东西。但是在 java 8 以后我们可以使用 foreach 函数来进行简化。 借助 java 8,我们可以使用 foreach 函数: 我们可以进一步简化它: 在我们只是迭代数组的元素时,这样会使代码很简洁。 一旦停止在 java 中编写如此多的 for 循环,foreach 就成为了你的第二选择,那么你应该看看 java 中的 streams。 例如,使用类似的语法,你可以轻松选择所有以 “鲁” 开头的英雄: 运行结果会显示小短腿“鲁班”。 停止编写太多 for 循环,完成后,java 8 streams 将自然而然地出现,你的代码将更易于阅读和编写。list<string> heroes = new arraylist<>();
heroes.add("典韦");
heroes.add("云中君");
heroes.add("鲁班");
heroes.add("盘古");
heroes.add("大乔");
heroes.add("宫本武藏");
heroes.add("裴擒虎");
heroes.add("明世隐");
iterator<string> heroesiterator = heroes.iterator();
while (heroesiterator.hasnext()) {
system.out.println(heroesiterator.next());
}
for (int i = 0; i < heroes.size(); i++) {
system.out.println(heroes.get(i));
}
for (string hero : heroes) {
system.out.println(hero);
}
heroes.foreach(hero -> system.out.println(hero));
heroes.foreach(system.out::println);
下一步呢?使用 java streams
heroes.stream().filter(hero -> hero.startswith("鲁"))
.foreach(system.out::println);
总结
下一篇: 如何运用DDD - 实体
推荐阅读
-
python 练习题:请利用循环依次对list中的每个名字打印出Hello, xxx!
-
详解在Vue.js编写更好的v-for循环的6种技巧
-
c++:请编写一个函数,对字符串“zheshigekendiedetimu”按从大到小的顺序排列,并截取后n位数(n为函数的一个参数)。
-
全民淘客还叫淘客吗?请后妈停止联盟APP的宣传
-
编写计算并输出一个3*3阶矩阵对角线元素的和。 程序运行结果示例: 请输入数组元素:(3*3)↙ 1 2 3 4 5 6 7 8 9↙ ↙ 数组为:cqupt
-
循环录入5个人的年龄,并计算平均年龄,如果录入的数据出现负数或者大于130的数,立即停止输出报错(无需打印平均年龄)
-
Python中enumerate()函数编写更Pythonic的循环
-
python 如何停止一个死循环的线程
-
C#程序编写高质量代码改善的157个建议【16-19】[动态数组、循环遍历、对象集合初始化]
-
景区收费:一个景区根据游人的年龄收取不同价格的门票,其中大于60岁或小于18岁的免费,18岁到60岁之间的20元。请编写游人(Visitor)类,根据年龄段决定能购买的门票价格并输出。用户输入n则退出