1.Stream 的特性:
a.元素序列:Stream 以序列的形式提供了特定类型的元素的集合。根据需求,它可以获得和计算元素,但是不会存储任何元素。
b.源:Stream 可以将集合、数组和 I/O 作为输入源。
c.聚集操作:Stream 支持 filter 、map 、limit 、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处理完的所有统计数据。
用于个人学习!