如何在Java函数中使用Stream API?
Java 8引入了Stream API,使处理集合和数组数据变得更加简单和优雅。Stream API是一种流式处理元素的方式,允许在集合(数组、列表等)中对元素进行函数式操作,例如过滤、映射、排序等。本文将介绍如何在Java函数中使用Stream API。
1. 创建Stream
可以从集合中创建Stream,例如:
List<String> list = Arrays.asList("cat", "dog", "bird");
Stream<String> stream = list.stream();
也可以从数组中创建Stream,例如:
String[] array = new String[] { "cat", "dog", "bird" };
Stream<String> stream = Arrays.stream(array);
2. Stream的中间操作
Stream上有许多中间操作,这些操作只是将Stream变换为另一个Stream,并未产生终止操作。在中间操作中,可以使用过滤、映射、排序等方法。
2.1 过滤(filter)
filter方法用于过滤出符合条件的数据,并将符合条件的数据放入一个新的Stream中。例如:
Stream<String> filteredStream = stream.filter(s -> s.contains("a"));
这个例子中,filter方法过滤出包含"a"字符的元素,然后将这些元素放入新的Stream中。
2.2 映射(map)
map方法用于对Stream中的元素进行映射,将映射后的结果放入新的Stream中。例如:
Stream<Integer> mappedStream = stream.map(s -> s.length());
这个例子中,map方法对Stream中的字符串进行映射,将字符串的长度作为映射结果放入新的Stream中。
2.3 排序(sorted)
sorted方法用于对Stream中的元素进行排序。例如:
Stream<String> sortedStream = stream.sorted();
这个例子中,sorted方法对Stream中的元素进行排序。
2.4 截断(limit)
limit方法用于截断Stream中的元素,限制元素的个数。例如:
Stream<String> limitedStream = stream.limit(2);
这个例子中,limit方法限制Stream的元素个数为2。
2.5 跳过(skip)
skip方法用于跳过Stream中的元素,跳过指定数量的元素。例如:
Stream<String> skippedStream = stream.skip(1);
这个例子中,skip方法跳过Stream中的 元素,返回包含剩余元素的Stream。
3. Stream的终止操作
Stream的终止操作用于执行Stream中的操作,并返回结果。
3.1 forEach
forEach方法用于对Stream中的每个元素执行指定操作。例如:
stream.forEach(s -> System.out.println(s));
这个例子中,forEach方法对Stream中的每个元素打印输出。
3.2 count
count方法用于统计Stream中的元素的个数。例如:
long count = stream.count();
这个例子中,count方法返回Stream中元素的个数。
3.3 collect
collect方法用于将Stream中的元素转换为集合或其他数据结构。例如:
List<String> list = stream.collect(Collectors.toList());
这个例子中,collect方法将Stream中的元素转换为List。
3.4 reduce
reduce方法用于对Stream中的元素进行归约操作。例如:
Optional<String> reduced = stream.reduce((s1, s2) -> s1 + "-" + s2);
这个例子中,reduce方法对Stream中的元素进行归约操作,将每个元素用"-"连接起来。
以上就是使用Stream API的一些基本方法。Stream API可以使数据处理更加简单和优雅,在Java函数中使用Stream API可以更加高效地处理数据。
