闲聊JDK8

本文介绍了Java 8中引入的Lambda表达式的使用,强调了其在减少代码量和提高可读性上的优势。通过示例展示了如何创建线程、排序列表,并解释了函数式接口的概念。同时,提到了方法引用的三种类型:静态方法、实例方法和对象方法的引用。此外,还简要提及了Stream API的基本操作,如中间操作和终止操作。
摘要由CSDN通过智能技术生成

日期还在用java.util.Date吗?

别用了,Date这个对象是可变的,不好用,这是硬伤。所以出来了LocalDate LocalTime LocalDateTime

Lambda表达式:Lambda表达式是对象,是一个函数式接口的实例

  1. 函数型编程
  2. 参数类型自动推断
  3. 代码量少,简洁

举个例子,来来来

起个线程

 new Thread(()->{System.out.println("来看看我简单不?");}).start();

排个序

  List<String> strs = Arrays.asList("hello","I am glad to see you")
  Collections.asSort(strs,(a,b)->a.length-b.length);

什么时候可以用Lambda表达式呢?
任何有函数式接口的地方!!! 什么是函数式接口呢?只有一个抽象方法的接口是函数式接口。
自定义函数式接口:

    @FunctionalInterface
	public interface MyMapper{
			int save(MyInfo myInfo);
	}
jdk1.8前中的函数式接口:Runnable  Callable Comparator
jdk1.8以后:java.util.function
Supplier:代表一个输出
Consumer:代表一个输入  BiConsumer两个输入
Function:一个输入一个输出 BiFunction 两个输入一个输出  输入和输出类型不同
UnaryOperater 一个输入一个输出 BinaryOperator 两个输入一个输出  输入和输出类型相同
        BiFunction<String,String,Integer> f1 = (a,b)->{
            return a.length()+b.length();
        };

方法的引用:

  • 静态方法的引用
   Supplier<String> s = ()->LocalDateMain.get();
   Supplier<String> s1 = LocalDateMain::get;
  • 实例方法的引用
Supplier<String> instanceStr = ()->new LocalDateMain().put();
Supplier<String> instanceStr1 = new LocalDateMain()::put;
  • 对象方法的引用
  • 构造方法的引用
    Stream API
    stream分为源、中间操作、终止操作
    中间操作:filter distinct sorted limit skip map/flatMap
    终止操作:forEach 等
 String[] arr = {"a","b","c","d"};
 Stream<String> arr1 = Stream.of(arr);
 List<String> list = Arrays.asList("a","b","c","d");
 Stream<String> stream = list.stream();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值