java8 Stream學習 第一天 惰性求值與及早求值
阿新 • • 發佈:2019-02-14
Stream操作分兩種,惰性求值和及早求值
返回值是Stream的是惰性求值,返回其他或返回空的則是及早求值
惰性求值的例子:
list.stream().filter(x -> { System.out.println(x); return x.getClazz().equals("會計"); });
該例只是刻畫了stream,並沒有做任何操作,所以並不會有列印的x。
及早求值的例子:
long i = list.stream().filter(x -> { System.out.println("1"+x.getClazz()); return x.getClazz().equals("會計"); }).count();
則會顯示list通過過濾後的總數
克服惰性求值也可以先獲取其Stream,再通過Stream獲取列表,如下:
Stream<User> stream = list.stream().filter(x -> x.getClazz().equals("會計")); list = stream.collect(Collectors.toList());