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());