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的基本用法。