欢迎访问宙启技术站
智能推送

在Java8中使用Stream函数处理集合

发布时间:2023-06-30 10:57:23

Java8引入了Stream API,使得集合的处理更加简洁和高效。Stream是一种不改变原有集合的数据结构,通过流式操作对集合进行处理的方式。

Stream可以通过集合类的stream()方法获取,也可以通过Stream类中的of()方法创建。Stream提供了丰富的操作方法,可以进行过滤、映射、排序、聚合等操作。

Stream提供了两类操作:中间操作和终止操作。中间操作是对集合进行处理后返回一个新的Stream对象,可以链式调用多个中间操作。终止操作是对最后的Stream对象进行处理,得到最终的结果。

常用的中间操作包括:filter、map、sorted、distinct等。filter用于对集合元素进行筛选,可以传入一个Predicate函数式接口作为筛选条件;map用于对集合元素进行映射,可以传入一个Function函数式接口对元素进行转换;sorted用于对集合元素进行排序,可以传入一个Comparator函数式接口进行排序规则的定义;distinct用于去除集合中的重复元素。

常用的终止操作包括:forEach、toArray、collect、count、max/min等。forEach用于遍历集合元素,可以传入一个Consumer函数式接口对元素进行处理;toArray将Stream转换为数组;collect将Stream转换为集合;count计算集合中的元素个数;max/min获取集合中的最大/最小元素。

以下是使用Stream函数处理集合的示例代码:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class StreamExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        for (int i = 1; i <= 100; i++) {
            numbers.add(i);
        }

        // 筛选出偶数
        List<Integer> evenNumbers = numbers.stream()
                .filter(n -> n % 2 == 0)
                .collect(Collectors.toList());
        System.out.println("偶数:" + evenNumbers);

        // 对集合元素进行平方
        List<Integer> squaredNumbers = numbers.stream()
                .map(n -> n * n)
                .collect(Collectors.toList());
        System.out.println("平方:" + squaredNumbers);

        // 排序
        List<Integer> sortedNumbers = numbers.stream()
                .sorted()
                .collect(Collectors.toList());
        System.out.println("排序:" + sortedNumbers);

        // 去除重复元素
        List<Integer> distinctNumbers = numbers.stream()
                .distinct()
                .collect(Collectors.toList());
        System.out.println("去重:" + distinctNumbers);

        // 计算总和
        int sum = numbers.stream()
                .reduce(0, Integer::sum);
        System.out.println("总和:" + sum);
    }
}

以上代码通过不同的中间操作和终止操作对集合进行了处理,得到了想要的结果。这种使用Stream函数处理集合的方式更加简洁、高效,并且对于大规模数据集合的处理更加友好。