一、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); }