码迷,mamicode.com
首页 > 其他好文 > 详细

stream流及方法引用

时间:2019-12-12 23:42:31      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:port   过滤   reac   count()   pack   value   java   lambda   冒号   

Stream 【只能使用一次,使用后就关闭了】

获取流的两种方式

1.所有Collection集合都可通过stream默认方式获取流

default Strea<E> stream ()

2.Stream接口的静态方法of可以获取对应的流。

static <T> Stream<T> of(T... values) 【参数为可变参,就可以传递一个数组】

常用方法

延迟方法:返回值类型仍然是Stream接口自身类型的方法,所以支持链式调用

Filter【过滤】Stream<T> filter(Predicate<? super T> predicate)  

map【映射】<R> Stream<R> map(Function<? super T,? extends R> mapper)

Limit【截取】Stream<T> limit(long maxSize)  截取前几个

Skip【跳过】Stream<T> skip(long n)      跳过前几个

concat【组合】static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)

终结方法:返回值类型不再是Stream接口自身类型的方法。

forEach【遍历】void forEach(Consumer<? super T> action)

count【统计】long count()  

 

方法引用:【::为引用运算符,而它所在的表达式称为方法引用。如果lambda要表达的函数方案已经存在于某个方法的实现中,那么可以通过双冒号来引用该方法作为Lambda的替代者】

通过对象名来引用成员方法【对象必须存在,成员方法也要存在】

通过类名引用静态成员方法【类已经存在,静态成员方法也要存在】

通过Super引用成员方法

通过this引用本类成员方法

 

类的构造器引用:【类名称::new

数组的构造器引用:【数组类型::new】(10int[]::new

 

【筛选组合eg】

 

package edu.xupt.test1;

import java.util.ArrayList;
import java.util.stream.Stream;

public class Demo1 {
public static void main(String[] args) {
ArrayList<String> arr1 = new ArrayList<>();
arr1.add("迪丽热巴");
arr1.add("宋远桥");
arr1.add("苏星河");
arr1.add("石破天");
arr1.add("石中玉");
arr1.add("老子");
arr1.add("庄子");
arr1.add("洪七公");
Stream<String> stream1 = arr1.stream();
ArrayList<String> arr3 = new ArrayList<>();
stream1.filter(name->name.length()==3).limit(3).forEach(s ->arr3.add(s));

ArrayList<String> arr2 = new ArrayList<>();
arr2.add("古力娜扎");
arr2.add("张无忌");
arr2.add("赵丽颖");
arr2.add("张三丰");
arr2.add("尼古拉斯赵四");
arr2.add("张天爱");
arr2.add("张二狗");
Stream<String> stream2 = arr1.stream();
ArrayList<String> arr4 = new ArrayList<>();
stream2.filter(name->name.startsWith("张")).skip(2).forEach(s ->arr4.add(s));

Stream<String> concat = Stream.concat(stream1, stream2);


}
}

 

stream流及方法引用

标签:port   过滤   reac   count()   pack   value   java   lambda   冒号   

原文地址:https://www.cnblogs.com/arroa/p/12032253.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!