基本用法
要使用 Stream API,我们首先需要从一个集合或数组中获取一个 Stream 对象。在 Java 8 中,集合和数组都增加了一个 stream()
方法,可以直接返回一个 Stream 对象。
下面是一个使用集合创建 Stream 对象的示例:
List<String> list = Arrays.asList("hello", "world", "java");
Stream<String> stream = list.stream();
这段代码中,我们通过 Arrays.asList()
创建了一个字符串列表,并通过 stream()
方法获取了一个 Stream 对象。
类似地,我们也可以从一个数组中创建 Stream 对象:
int[] array = {1, 2, 3, 4, 5};
IntStream stream = Arrays.stream(array);
这段代码中,我们通过 Arrays.stream()
方法从一个整数数组中获取了一个 IntStream 对象。
一旦我们获得了一个 Stream 对象,就可以对其进行各种操作,例如过滤、映射、排序和归约等。下面将会介绍常见的 Stream 操作。
过滤操作
过滤是一个非常常见的操作,它可以帮助我们筛选出符合条件的元素。在 Stream API 中,我们可以使用 filter()
方法来进行过滤操作。
下面是一个使用 filter()
方法对字符串列表进行过滤的示例:
List<String> list = Arrays.asList("hello", "world", "java");
list.stream()
.filter(s -> s.length() > 4)
.forEach(System.out::println);
这段代码中,我们首先通过 stream()
方法获取了一个 Stream 对象,然后使用 filter()
方法筛选出长度大于 4 的元素,并通过 forEach()
方法将结果输出到控制台上。控制台上输出结果为:
hello
world
映射操作
映射操作可以帮助我们将一个集合中的每个元素转换为另一个对象。在 Stream API 中,我们可以使用 map()
方法来进行映射操作。
下面是一个使用 map()
方法将字符串列表中的元素转换为大写字母的示例:
List<String> list = Arrays.asList("hello", "world", "java");
list.stream()
.map(String::toUpperCase)
.forEach(System.out::println);
这段代码中,我们使用 map()
方法将字符串列表中的每个元素都转换为大写字母,并通过 forEach()
方法将结果输出到控制台上。控制台上输出结果为:
HELLO
WORLD
JAVA
排序操作
排序操作可以帮助我们将一个集合按照某种规则进行排序。在 Stream API 中,我们可以使用 sorted()
方法来进行排序操作。
下面是一个使用 sorted()
方法对整数数组进行排序的示例:
int[] array = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
Arrays.stream(array)
.sorted()
.forEach(System.out::println);
这段代码中,我们使用 sorted()
方法将整数数组按照从小到大的顺序进行排序,并通过 forEach()
方法将结果输出到控制台上。输出结果为:
1
1
2
3
3
4
5
5
6
9
归约操作
归约操作可以帮助我们将一个集合中的多个元素合并成一个单一的结果。在 Stream API 中,我们可以使用 reduce()
方法来进行归约操作。
下面是一个使用 reduce()
方法对整数数组进行求和的示例:
int[] array = {1, 2, 3, 4, 5};
int sum = Arrays.stream(array)
.reduce(0, (a, b) -> a + b);
System.out.println(sum);
这段代码中,我们使用 reduce()
方法将整数数组中的所有元素相加,并将结果输出到控制台上。输出结果为:
15