Java (8)循环

585 阅读2分钟

「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

Java 循环

Java中有三种主要的循环结构:

  • while 循环
  • do...while 循环
  • for 循环

while 循环

while( 布尔表达式 ) {
    // 循环内容
}

do...while 循环

do {
    // 循环内容
} while( 布尔表达式 );

for 循环

和 C++ 11 一样,Java有两种 for 循环,一种是类似与 C 的:

for( 初始化; 布尔表达式; 更新 ) {
    // 代码语句
}

还有一种用于数组迭代的:

for(type element: array)
{
    System.out.println(element);
}

声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

例如:

public class Test {
   public static void main(String args[]){
      int [] numbers = {10, 20, 30, 40, 50};
 
      for(int x : numbers ){
         System.out.print( x );
         System.out.print(",");
      }
      System.out.print("\n");
      String [] names = {"James", "Larry", "Tom", "Lacy"};
      for( String name : names ) {
         System.out.print( name );
         System.out.print(",");
      }
   }
}

循环控制

breakcontinue 在 Java 中也同样有效。

Stream

在比较新的 Java 8 中,Java 提供了一个 Stream 类。可以比较响应式地去处理一个数据集合(比如数组、列表),处理的速度比手写 for 循环更快,也让代码更容易。比如:

int sum = widgets.stream()
    .filter(w -> w.getColor() == RED)
    .mapToInt(w -> w.getWeight())
    .sum();

这段代码的作用就是在一个列表 widges 中过滤(选择)出所有红色的,然后取出其重量,求和。利用 Stream,让代码更专注于描述问题,省去了繁琐的循环结构控制语句细节。同时 Java 内部会自动去优化这种 stream 的处理流程,很可能比我们手动去写 for 更快哦。

如果你做 iOS 开发,Stream 在语法上其实就和 Swift 的 Combine 很像。 首先把集合数据转化成 Stream 对象,然后,就可以用 map、filter、sorted、limit、forEach 等方法去处理它了。

更多关于 stream 的介绍,可以参考官方的文档:Java docs: stram

在我个人的实践中,这个东西还是比较很好用的,用来做点排序过滤啥的,代码简单、效率也确实过得去,如果你的生产环境允许,这些 Java 8 的新东西好多都还是推荐学习的。