jdk1.8新特性

在java8中引入了一个新的操作符“->” ,即是lambda表达式,可以把它看作是两部分。左侧:lambda表达式的参数列表 右侧:所需执行的功能。

其中它有四大核心接口:

函数名称        参数类型        返回类型        用途
Consumer           T            void       对类型为T的继承应用操作,包含方法:void accept(T)

Supplier<T>        无            T          返回类型为T的对象,包含: T get();

Function<T,R>      T             R          对类型为T的对象操作,返回结果,包含方法:R apply(T)

Predicate<T>       T            boolean    确定类型为T的参数对象是否满足某约束 boolean test(T)

语法格式一:无参数,无返回值 ex:

       //jdk1.8以前
       Runnable runnable = new Runnable() {
           @Override
           public void run() {
               System.out.println("hello");
           }
       };
       runnable.run();

       //jdk1.8以后
       Runnable runnable = () -> System.out.println("hello");
       runnable.run();

语法二:若是有一个参数,并且无返回值 (x)-> System.out.println(x);

语法三:若是有一个参数,小括号可以省略不写 x -> System.out.println(x);

语法四:若是有两个参数,并且lambda表达式有多条语句,如: 

Comparator<Integer> comparator = (x,y) -> {
            System.out.println("函数式接口");
            return Integer.compare(x,y);
        };

语法五:若lambda只有一条语句,返回值和大括号都可以省略不写

(一) Comparator<Integer> comparator = (x,y) -> Integer.compare(x,y);
       
建议使用下面这一种
(二)Comparator<Integer> comparator =  Integer::compare;
ps: 类名::方法名

System.out.println(comparator.compare(2,2));

语法六:Lambda表达式的参数列表的数据类型可以省略不写,jvm编译可以进行‘类型推断’ 即:(Integer x,Integer y) -> Integer.compare(x,y);

 

二:流(stream):是数据渠道,用于操作数据源(集合,数组)等生成的数据序列。集合讲的是数据,流讲的是计算

stream一:自己不会存储元素

           二:不会改变源对象。相反,他们会返回一个持有结果的新Stream

           三:操作是延迟执行的,意味着他们会等到需要结果的时候才执行。 

筛选与切片

filter——接收lambda,从流中排除某些元素。

limit——截断流,使其元素不超过给定数量

skip(n)——跳过元素,返回一个扔掉了n个元素的流。若流中元素不足n个,则返回一个空流,与limit互补

distinct——筛选,通过生成元素的hashCode和eque去除重复元素

映射: 

map——接受lambda,将元素转换为其他形式或提取信息,接受一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素

flatMap——接受一个函数作为参数,将流中的每一个值都换成另一个流,然后把所有流连续成一个流

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值