使用方法引用简化Lambda表达式

/*
 *	 方法引用: 简化Lambda-->Lambda表达式特殊的一种表现形式
 * 		当lambda体中的实现是通过调用另外一个方法实现的时候,这个方法的参数列表和返回值类型与抽象方法的参数列表与返回值一致的时候,就可以使用方法引用进行代替
 *
 *  	方法引用
 *  		引用::成员方法名
 *  		类名::静态方法名
 *  		类名::成员方法名
 *
 *  	构造器引用
 *  		类名::new
 *
 *      注意事项:当使用方法引用时(1)返回值类型匹配
 *                            (2)参数类型匹配 Comparator<Integer> com = (i1,i2)->Integer.compare(i1, i2); 两个小括号中的类型和参数个数要相同
 *                            (3)抽象方法第一个参数s1作为内部引用另一个方法的对象存在,如果抽象方法存在多个参数,第二个参数开始匹配内部引用的方法的参数列表
 *                                 BiPredicate<String,String> pre = (s1,s2)->s1.equals(s2);
 */
public class FunctionQ02 {
    public static  void main(String[] args) {
        List<String> list=new ArrayList();
        list.add("123");
        list.add("12");
        list.add("1");

        //引用::成员方法名
        //遍历容器,打印里面的每一个数据
        list.forEach((o)->{
            System.out.println(o);
        });
        //Lambda体实现的功能就是打印参数-->可以通过方法引用来代替
        //通过PrintStream这个类型  的对象调用println实现的,Lambda的抽象方法的参数做为println方法的参数,都没有返回值
        PrintStream ps=System.out;
        list.forEach(ps::println);

        //类名::静态方法名
        //比较2个double参数,返回最大的
        //2个参数 1个返回值  BiFunction
        BiFunction<Double,Double,Double> bi=(b1,b2)->Math.max(b1,b2);
        //lambda的实现求2个参数的最大值是通过调用另外一个方法实现的,并且抽象方法的参数作为内部引用的方法的参数,引用方法的返回值作为抽象方法的返回值-->方法引用
        bi=Math::max;
        System.out.println(bi.apply(100.0,200.0));

        //比较2个int类型的参数
        Comparator<Integer> com = (i1, i2)->Integer.compare(i1, i2);
        com = Integer::compare;

        //类名::成员方法名
        //比较2个字符串是否相等  2个字符串参数  布尔类型
        BiPredicate<String,String> pre=(s1,s2)->s1.equals(s2);
        pre=String::equals;
        System.out.println(pre.test("zhangsan","zhangsan1"));

        //供给型
        Employee e=new Employee("熊大",5);
        Supplier<String> sup=()->e.getName();
        sup=e::getName;
        System.out.println("名字为="+sup.get());

        Function<Employee,String> func=Employee::getName;
        System.out.println(func.apply(e));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值