Java 中的 Stream 流

1.Stream 的特性:

a.元素序列:Stream 以序列的形式提供了特定类型的元素的集合。根据需求,它可以获得和计算元素,但是不会存储任何元素。

b.源:Stream 可以将集合数组I/O 作为输入源。

c.聚集操作:Stream 支持 filtermaplimit reduce 等的聚集操作。

d.流水技术:Stream 操作返回流本身,所以它们的返回值可以以流水的形式存在。这些操作称之为中间操作,它们的功能是负责输入、处理、向目标输出。collect() 方法是一个终结操作,通常存在于流水线操作的末端,来标记流的结束。

e.自动迭代:Stream 的操作可以基于已经提供的源元素进行内部的迭代,集合则需要显示的迭代。

2.Java8 ,集合的接口有两个方法来产生流。

a.stream():返回一个将集合视为源的连续流。

b.parallelStream():返回一个将集合视为源的并行流。

forEach:用于对 Stream 中的每个元素进行迭代操作。

例:forEach 输出10 个随机数

Random random = new Random();
random.ints().limit(10).forEach(System.out::println);

map:该方法用于将每个元素映射到对应的结果上。

例:输出唯一的某个数的平方

 
 
List<Integer> numbers = Arrays.asList(2,3,4,5,6,7,8,9);
//get list of unique squares
List<Integer> sqaresList = numbers.stream().map(i->i*i).distinct(collectors.toList());

filter:过滤满足条件的元素。

例:输出使用了过滤方法的空字符串数量

List<String> strings = Arrays.asList("efg","","abc","bc","ghij","","lmn");
//get count of empty string
long count = strings.stream().filter(strings->string.isEmpty()).count();

limit:用于减少Stream的大小。

Random random = new Random();
random.ints().limit(10).forEach(System.out::println);

sorted:用于对Stream排序。

例:以有序的形式输出10个随机数

Random random = new Random();
random.ints().limit(10).sorted().forEach(System.out::println);

3.并行处理

ParallelStream :是 stream 用于并行处理。

Collector: 用于合并Stream的处理结果。返回一个字符串列表。可用来计算Stream处理完的所有统计数据。

用于个人学习!

猜你喜欢

转载自blog.csdn.net/wanjinyoung/article/details/80074995