Java 8 流及其操作


Java 中,流是在 Java 8 中引入的。它表示元素的集合,并支持对这些集合执行函数式操作。在这里,我们谈论的是像 数组列表集合 这样的集合。

Stream API 简单地将源元素通过各种内置方法传递,以返回所需的结果。在本文中,我们将讨论可以在 Java 流上执行的不同操作。

Java 8 流上的操作

我们可以对 Java 流执行两种类型的操作:

  • 中间操作 - 它们使用 filter()、map()、limit()、skip() 等方法处理输入流的元素。

  • 终止操作 - 它们触发中间操作以生成非流结果,例如打印、计数和存储。终止操作借助 forEach()、collect()、toArray() 等方法执行。

Java 流的方法统称为 高阶函数。中间操作和终止操作的主要区别在于,终止操作不能链接在一起,而中间操作可以链接。

Java 流上的过滤操作

在下面的 Java 程序中,我们将演示 Java 流的过滤操作。为此,我们将使用 filter() 方法过滤大于 10 的数字,使用 limit() 方法限制输出的大小,并使用 forEach() 方法打印结果。

import java.util.*;
public class Example1 {
   public static void main(String[] args) {
      // creating a list of numbers
      List<Integer> numbers = Arrays.asList(5, 21, 32, 4, 13, 41, 10);
      // printing all numbers in the list
      System.out.println("Numbers in the given List : " + numbers);
      System.out.println("List of numbers greater than 10: ");
      // filtering the numbers greater than 10 from list
      numbers.stream().filter(nums -> nums > 10)
         // limiting the result to 2 only
         .limit(2)
         // printing the result
         .forEach(System.out::println);
   }
}

运行此代码时,将产生以下结果:

Numbers in the given List : [5, 21, 32, 4, 13, 41, 10]
List of numbers greater than 10: 
21
32

Java 流上的排序操作

下面的 Java 程序显示了如何执行流的排序。为此,我们将使用 sorted() 方法按升序对元素进行排序,然后使用 forEach() 方法打印结果。

import java.util.*;
public class Example2 {
   public static void main(String []args) {
      // creating a list of numbers
      List<String> terms = Arrays.asList("Objects", "Classes", "Methods", "Constructors", "Abstract");
      System.out.println("List after Sorting: ");
      // Sorting the elements of list
      terms.stream()
         .sorted()
         // printing the result
         .forEach(System.out::println);
   }
}

执行后,将显示以下输出:

List after Sorting: 
Abstract
Classes
Constructors
Methods
Objects

startsWith() 方法的使用

在这个 Java 程序中,我们将打印以字符“C”开头的流元素。我们将为此操作使用 filter()、startsWith() 和 collect() 方法。

import java.util.*;
import java.util.stream.*;
public class Example3 {
   public static void main(String []args) {
      // creating a list of numbers
      List<String> terms = Arrays.asList("Objects", "Classes", "Methods", "Constructors", "Abstract");
      System.out.println("Original List: " + terms);
      System.out.println("List after filtering: ");
      // Filtering the elements that start with 'C'
      List<String> output = terms.stream()
                     .filter(x -> x.startsWith("C"))
                     .collect(Collectors.toList());
      // printing the result                        
      System.out.println(output);
   }
}

以上代码的输出如下:

Original List: [Objects, Classes, Methods, Constructors, Abstract]
List after filtering: 
[Classes, Constructors]

distinct() 方法的使用

下面的 Java 程序说明了如何仅使用 distinct() 方法从元素流中打印不同的元素。

import java.util.*;
public class Example4 {
   public static void main(String[] args) {
      // creating a list of numbers
      List<Integer> numbers = Arrays.asList(55, 55, 44, 34, 89, 89, 10, 10);
      System.out.println("Distinct elements from the list: ");
      // removing duplicate numbers from the list 
      numbers.stream()
        .distinct()
        .forEach(System.out::println);
   }
}

将获得以下输出:

Distinct elements from the list: 
55
44
34
89
10

更新于: 2024-08-01

1K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告