这里写目录标题
Stream流
体验Stream流
Stream流的常见生成方式
流程
分类(默认方法、map体系集合间接生成、数组of方法)
具体操作
这里Map集合体系是间接生成Stream流,通过利用map集合对象调用方法生成“键、值、或者键值对象”的集合,利用这些集合生成流
数组则利用Stream的静态方法来生成流,利用of方法
Stream流常见中间操作之filter
(Stream流的中间操作可以理解为之前的调用自定义方法的操作)
简介
filter可以理解为之前的自定义方法,参数是一个Predicate接口,接口里的抽象方法是text(T t),因为抽象方法的参数是一个泛型,所以main里面lambda表达式的参数可以自行设置,主要是由所调用Stream流的数据类型决定
且main方法里的利用Stream流调用方法时,可以看作之前的调用自定义方法,参数可以传入lambda表达式
具体操作
Stream可以理解为流,所以无需定义直接调用即可
注意,s.startWith()方法的功能是 返回开头是“xxx”的字符串
Stream流常见中间操作之limit&skip
简介
具体操作
注意可以结合使用,也就是先调用一个中间操作之后,再在此基础上,调用另一个中间操作
原因如下
生成流之后,调用流的方法,返回的还是一个流,所以可以链式调用
Stream流常见中间操作之concat&distinct
简介
具体操作
特别注意 合并流方法 也就是cancat方法,是一个静态方法,直接用“Stream”来调用就可以
注意 distinct方法无参数,是一个功能型方法
Stream流常见中间操作之sorted
简介
具体代码
注意看注释里面需求1和需求2的代码 需求1是自然排序,也就是按照字母顺序排序,需求2是按照自己写的排序器排序
而对于注释行下面的代码块,是优化了需求2,其中compareTo方法是字符串的自然排序方法
Stream流常见中间操作之map&mapToInt
简介
注意 某个流调用map之后 map会自动对流的每个元素都进行操作,也就是自带遍历功能
具体操作
map是一个Stream流的一个方法,可以看作是自定义方法,这里只不过是Java已经替我们定义好了,直接调用即可(其他Stream流方法同理),而map参数列表是一个函数式接口,所以,lambda表达式的参数与接口中的方法对应,由上图可知,接口中是一个泛型方法,所以lambda表达式的参数可以任意设置,返回值也是泛型,所以返回值也可以任意设置,只不过需要在lambda表达式代码块做一些操作,完成参数类型到目标类型的转换
Stream流常见终结操作
简介
具体操作
Stream流元素收集到集合
简介
具体操作
collect方法的参数是一个接口,接口的实例化子类是collectors.toList()方法
注意这里 需求5 这里用到了数组生成流的方式,是用Stream.of(数组名),这样就得到了一个流,在这之后可以对这个流进行一些操作,比如图中的过滤操作
注意需求6
生成map集合,仍然是流调用collect方法,参数:一个接口(需要传入一个带有两个子参数的collectors实例化方法),两个子参数分别为两个函数式接口,这里可以传入两个lambda表达式