文章目录
Java8 Stream API
Java
中的Stream
(流)被定义为支持聚合操作的源的一系列元素序列。这里的源指的是向Stream
提供数据的Collections
或Arrays.
Stream
保持数据在源中的顺序。这种聚合操作或批量操作允许我们更轻松而清晰的对stream
元素作出常见的操作。
在开始之前,了解Java 8 Streams
的设计方式是绝大多数stream
操作只返回streams
是很重要的。这帮助我们创建了stream
操作链。这被称作为pipe-lining
(管道链)。
1. Java Stream
- Not a data structure(非数据结构)
- Designed for lambdas(为
lambda
)设计 - Do not support indexed access(不支持索引访问)
- Can easily be outputted as arrays or lists(很容易输出为
arrays
或list
) - Lazy access supported(支持延迟加载)
- Parallelizable(并行)
2. Different ways to create streams
2.1 Stream.of(val1,val2,val3…)
public class StreamBuilders
{
public static void main(String[] args)
{
Stream<Integer> stream = Stream.of(1,2,3,4,5,6,7,8,9);
stream.forEach(p -> System.out.println(p));
}
}
2.2 Stream.of(arrayOfElements)
public class StreamBuilders
{
public static void main(String[] args)
{
Stream<Integer> stream = Stream.of( new Integer[]{
1,2,3,4,5,6,7,8,9} );
stream.forEach(p -> System.out.println(p));
}
}
2.3 List.stream()
public class StreamBuilders
{
public static void main(String[] args)
{
List<Integer> list = new ArrayList<Integer>();
for(int i = 1; i< 10; i++){
list.add(i);
}
Stream<Integer> stream = list.stream();
stream.forEach(p -> System.out.println(p));
}
}
2.4 Stream.generate() or Stream.iterate()
public class StreamBuilders
{
public static void main(String[] args)
{
Stream