java8 Lambda表达式学习

前言
  • 学习lambda表达式记录
开始
1.替换匿名内部类
  • 箭头符号左边是参数,右边的表达式或者语句。
  • 如果是表达式,不需要花括号,又返回值
  • 加入花括号可以让我们写多条语句。
 new Thread(() -> {System.out.println("oh yes");}).start();
2.排序
  • 在这里参数列表省略了类型,编译时jvm会通过上下文进行类型推断。
String[] strs = new String[]{"h","y","q","1","2","3"};
Collections.sort(Arrays.asList(strs),(o1,o2) -> o1.compareTo(o2));
Arrays.stream(strs).forEach((element)->{System.out.print(element);});
//输出:123hqy

// 使用 :: 的 Lambda 表达式
Arrays.stream(strs).forEach(System.out::println);
3.双冒号操作符
  • 双冒号(::)操作符是 Java 中的方法引用
    • 使用方式是 对象::方法 如 person -> person.getName()
    • 可以使用util.function 包下的Function来接收
    • 传入参数是Person,返回值是姓名可用如下来接收
Function<Person,String>  =  person -> person.getName() 
4.自定义功能接口
  • @FunctionalInterface让接口定义为支持lambda功能的接口。
@FunctionalInterface
public interface MyFuncInterFace {
    public void doSome();
}
  • 下面是实现
    • 使用lambda表达式,让我们得到了接口的引用,可以直接调用。
    • @FunctionalInterface主要用于编译级错误检查,加上该注解,当你写的接口不符合函数式接口定义的时候,编译器会报错
//使用lambda实例化功能接口对象,供我们调用
        MyFuncInterFace my = () -> {System.out.println("我是接口的实现内容");};
        my.doSome();
5 逻辑操作
  • 满足表达式的会被输出
        String[] strs = new String[]{"h","y","q","1","2","3"};
        Predicate<String> predicate = (n) -> n.equals("1");

        for(String s : strs){
            if(predicate.test(s)){
                System.out.println(s);
            }
        }
6.Stream 操作
  • map方法将inputStream中的元素映射给OutputStream中的元素
    • 例如下面通过原始数据得到目标数据(原始数据的2倍)
  List<Integer> list = Arrays.asList(1,2,3);
 list.stream().map((in) -> in*2).forEach(System.out::print);
 //输出 246
  • 输出原始元素的两倍的的元素集合的 和
    • i = i*2
    • sum+=i
    • reduce()用来组合流中的元素。
Integer sum = list.stream().map((in) -> in*2).reduce((x,y) -> x+y).get();
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值