今天学习了Java8的流,做个总结。
在我的理解中,Java8引入了函数式编程,所以Java8里有多了许多关于函数式编程的内容。流就类似于一个迭代器,用于高效操作集合的迭代器。在流中,Java8以函数式编程的方式内置了许多强大的api,让我们在处理集合时更加的方便,但是这些操作基于函数式编程的思想,所以对于我们Java程序员来讲需要一个思想的转换。
首先,对于那些集合类调用stream方法就相当于创建了一个流,例如( new ArrayList.stream() ),然后我们就可以链式的调用强大的api了。先来看一些基本的方法。
中间操作
方法 返回类型 操作参数 函数描述符
filter Stream Predicate T -> boolean
map Stream Function T -> R
limit Stream
sorted Stream Comparator (T ,T) -> int
distinct Stream
终端操作
forEach 遍历流中的每个元素,返回值为void
count 返回流中的个数 返回值为long
collect 把流规约成一个集合 (list ,map等)
上面的中间操作的方法是指对于流中的每遍历到一个元素,都会执行一个。
而终端操作只会在最后执行一次。