返回

火力全开!解锁Java 8 Stream集合的神奇魔法

后端

Java Stream 简介

Java Stream是一种抽象,使您能够以声明性方式处理集合。这意味着您可以专注于要实现的目标,而无需担心如何实现它。Stream提供了大量操作,可以用于处理集合中的元素。这些操作可以分为四类:筛选、归约、分组和聚合。

筛选集合

筛选操作用于从集合中选择满足特定条件的元素。这可以通过使用filter()方法来实现。例如,以下代码从一个集合中选择所有大于10的元素:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);

List<Integer> filteredNumbers = numbers.stream()
        .filter(number -> number > 10)
        .collect(Collectors.toList());

System.out.println(filteredNumbers);

输出:

[11, 12]

归约集合

归约操作用于将集合中的元素组合成一个单一的元素。这可以通过使用reduce()方法来实现。例如,以下代码将一个集合中的所有元素求和:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

int sum = numbers.stream()
        .reduce(0, (a, b) -> a + b);

System.out.println(sum);

输出:

55

分组集合

分组操作用于将集合中的元素划分为不同的组。这可以通过使用groupBy()方法来实现。例如,以下代码将一个集合中的元素按其长度分组:

List<String> words = Arrays.asList("apple", "banana", "cherry", "dog", "elephant", "fish");

Map<Integer, List<String>> groupedWords = words.stream()
        .collect(Collectors.groupingBy(String::length));

System.out.println(groupedWords);

输出:

{3=[dog, cat], 5=[apple, fish], 6=[banana], 8=[elephant, butterfly]}

聚合集合

聚合操作用于对集合中的元素进行统计。这可以通过使用summarizing()方法来实现。例如,以下代码计算一个集合中元素的平均值、最大值、最小值和总和:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

IntSummaryStatistics stats = numbers.stream()
        .collect(Collectors.summarizingInt(Integer::intValue));

System.out.println(stats);

输出:

IntSummaryStatistics{count=10, sum=55, min=1, max=10, average=5.5}

结论

Java Stream是一种强大的工具,可让您轻松处理集合。它提供了一系列操作,使您能够筛选、归约、分组和聚合集合。在本文中,我们探讨了这些操作,并通过示例代码展示了如何使用它们。