java-streamjava-stream入门


备注

本节概述了java-stream是什么,以及开发人员可能想要使用它的原因。

它还应该提到java-stream中的任何大型主题,并链接到相关主题。由于java-stream的文档是新的,您可能需要创建这些相关主题的初始版本。

安装或设置

有关设置或安装java-stream的详细说明。

使用Android Studio在Android中使用Java Stream Api(Java 8)

Gradle设置:

build.gradle(模块:app)

 compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

     jackOptions {
            enabled true
        }
 

什么是Stream API?

Stream是Java 8中引入的新抽象层。流是来自流源的一系列元素(对象,基本类型)。因此,stream不是数据结构,它不存储它使用的元素。它可以是有限的或无限大小,并允许轻松的代码并行性

好处:

  • 它有助于以声明方式使用数据。我们可以使用像Max,Min等数据库函数,而无需运行完整的迭代。
  • 它充分利用了多核架构,而不必担心多线程代码。
  • 我们可以使用Java Stream创建一个数据操作管道,它可以按顺序或并行运行。
  • 它为group by,order by等操作提供支持。
  • 它支持在函数式编程风格中编写代码。
  • 它提供数据的并行处理。

流如何工作:

正常方法(不使用流Api):

 List<Integer> numbers = new ArrayList<>();
    numbers.addAll(Arrays.asList(1, 20, 3, 10, 20, 30, 4, 50, 80, 1, 2));//adding dummy data

    int i = 0;
    List<String> number_str = new ArrayList<>();
    for (Integer num : numbers) {
        if (i >= 5)//after 5 loop will stop
            break;

        if (num >= 10) // check number greater than or equal to 10
        {
            number_str.add(String.format("Number %d", num));//Typecast Integer to String then add to String List
            i++;//increment i count
        }
    }

    number_str.sort(Comparator.naturalOrder());//sort the list
 

在上面的代码中,我们创建了Integer List并添加了一些数据然后使用for循环迭代。在每次循环执行时,我们检查循环计数( i >= 5 )和num >=10 。最后排序字符串列表。

现在,让我们使用Java的8 Stream API重写代码:

  List<Integer> numbers = new ArrayList<>();
numbers.addAll(Arrays.asList(1, 20, 3, 10, 20, 30, 4, 50, 80, 1, 2));

List<String> number_str = numbers.stream()
        .filter(num -> num >= 10)//check num greater than 10
        .limit(5)//stop loop at 5
        .sorted()//sort the list
        .map(num -> String.format("Number %d", num))//typecast into String List
        .collect(Collectors.toList());