java8特性——stream

  • Post category:other

Java8特性——Stream

简介

Stream是Java 8中新增的一种处理集合的方式,它可以让我们以一种声明式的方式来处理数据,而不是传统的命令式的方式。Stream可以我们更加简洁、高效地处理集合中的数据。

创建Stream

可以通过以下方式来创建Stream:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();

在上述代码中,我们首先创建了一个List,然后通过stream()方法来创建一个Stream。

中间操作

Stream中的中间操作可以对数据进行过滤映射、排序等操作,常用的中间操作有:

filter

filter方法可以根据指定的条件过滤出符合条件的元素,例如:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream =.stream().filter(i -> i % 2 == 0);

在上述代码中,我们使用filter方法过滤出了所有偶数。

map

map方法可以将一个元素映射为另一个元素,例如:

List<String> list = Arrays.asList("apple", "banana", "orange");
Stream<String> stream = list.stream().map(s -> s.toUpperCase());

在上述代码中,我们使用map方法将所有元素转换为大写字母。

sorted

sorted方法可以对元素进行排序,例如:

List<Integer> list = Arrays.asList(3, 1, 4, 2, 5);
Stream<Integer> stream = list.stream().sorted();

在上述代码中,我们使用sorted方法对元素进行排序。

终止操作

Stream中的终止操作可以对数据进行统计、归约、收集等操作,常用的终止操作有:

forEach

forEach方法可以对每个元素执行指定的操作,例如:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().forEach(System.out::println);

在上述代码中,我们使用forEach方法输出了所有元素。

count

count方法可以统计元素的个数,例如:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
long count = list.stream().count();

在上述代码中,我们使用count方法统计了元素的个数。

collect

collect方法可以将元素收集到一个集合中,例如:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenList = list.stream().filter(i -> i % 2 == 0).collect(Collectors.toList());

在上述代码中,我们使用collect方法将所有偶数收集到一个集合中。

示例1:使用Stream统计集合中的元素个数

List<Integer> list = Arrays.asList(1,2, 3, 4, 5);
long count = list.stream().count();
System.out.println("元素个数:" + count);

在上述代码中,我们使用count方法统计了集合中元素的个数。

示例2:使用Stream过滤集合中的元素

List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> filteredList = list.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
System.out.println("过滤后的集合:" + filteredList);

在上述代码中,我们使用filter方法过滤出了所有以字母”a”开头的元素。

总结

Stream是Java 8中的一种处理集合的方式,它可以让我们以一种声明式的方式来处理数据,而不是传统的命令式的方式。本攻略介绍了Stream的创建、中间操作和终止操作,并提供了两个示例说明。通过学习本攻略,相信你已经掌握了Stream的基本用法。