java Lambda 表达式

解释

可以吧Lambda表达式理解为简洁的表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表,又函数主体,可能还有一个可以抛出的异常列表.(行为参数化)

语法

(params) -> expression
或者
(params) -> {statements;}
- 参数列表
接口中方法的参数列表
- 箭头
-> 把参数列表和Lambda表达式分开
- Lambda主体
接口方法中函数的执行主体和返回值

使用地方

Lambda表达式,需要在函数式接口上使用

函数式接口

函数式接口 就是纸定义了一个抽象方法的接口.例如 Comparator ,Runnable,Callable,Predicate,Consumer,Funciotn

注意:在java8中接口吸纳在还可以拥有默认方法.哪怕接口又很多默认方法,质押接口之定义了一个抽象方法,它仍旧是一个函数式接口

实例代码

//Consumer
package com.cyl.www.cylBoot.java8;

import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

/**
 * ${DESCRIPTION}
 *
 * @Author: DianXiao2
 * @Date: Created in  2018-01-18 下午3:11
 * @Modified by:
 **/
public class ConsumerTest {

    public static <T> void forEach(List<T> list, Consumer<T> c){
        for(T t : list){
            c.accept(t);
        }
    }

    public static void main(String[] args) {
        forEach(Arrays.asList(1,3,4,5,6),(Integer i) -> {int m = i+2;
            System.out.println(m);});
    }
}
package com.cyl.www.cylBoot.java8;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

/**
 * ${DESCRIPTION}
 *
 * @Author: DianXiao2
 * @Date: Created in  2018-01-18 下午3:18
 * @Modified by:
 **/
public class FunctionTest {

    public static <T,R> List<R> map(List<T> list , Function<T,R> f){
        List<R> result = new ArrayList<>();
        for(T t : list){
            result.add(f.apply(t));
        }
        return result;
    }

    public static void main(String[] args) {
        List<String> list = Arrays.asList("caoyulong","huzhuohui");
        List<Integer> result = map(list,(String s) -> s.length());
        System.out.println(result);
    }
}
package com.cyl.www.cylBoot.java8;

import com.cyl.www.cylBoot.java8.interfaceTest.Predicate;

import java.util.ArrayList;
import java.util.List;

/**
 * ${DESCRIPTION}
 *
 * @Author: DianXiao2
 * @Date: Created in  2018-01-18 下午3:04
 * @Modified by:
 **/
public class PredicateTest {

    public static <T> List<T> filter(List<T> list, Predicate<T> p){
        List<T> result = new ArrayList<>();
        for(T t : list){
            if(p.test(t)){
                result.add(t);
            }
        }
        return result;
    }

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        for(int i = 0 ; i < 10 ; i++){
            list.add("hhhh"+i);
        }
        List<String> result = filter(list , (String s) -> !s.isEmpty());
        System.out.println(result);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值