一、Stream AP的引入弥补了JAVA函数式编程的缺陷。
二、Stream相比集合类占用内存更小:集合类里的元素是存储在内存里的,Stream里的元素是在访问的时候才
被计算出来。(有点相似懒加载、延迟计算)
三、Stream能够建立无穷个数的集合。java
代码示例编程
class NumSupplier implements Supplier<Long> { long value = 0; public Long get() { this.value = this.value + 1; return this.value; } } /** * 无穷集合 */ public static void numTest(){ Stream<Long> natural = Stream.generate(new NumSupplier()); natural.map((x) -> { return x * x; }).skip(2).limit(20).forEach(System.out::println);
//转list stream has already been operated upon or closed
List<Long> collect = natural.collect(Collectors.toList());
}
一、filter() 元素筛选
二、map() 元素变换/操做
三、forEach() 元素遍历函数式编程
代码示例函数
/** * Stream Test */ public static void streamTest(){ List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); Stream<Integer> stream = numbers.stream(); stream.filter(a->{ a += 10; return a > 15; }).map(a -> { return a * a; }).forEach(System.out::println); }