JAVA8新特性
一、Lambda表达式
Lambda规定接口中只能有一个需要被实现的方法,不是规定接口中只能有一个方法。
jdk 8 中有另一个新特性:default, 被 default 修饰的方法会有默认实现,不是必须被实现的方法,所以不影响 Lambda 表达式的使用
注解@FunctionalInterface
修饰函数式接口,要求接口中的抽象方法只有一个。一般会与Lambda表达式一起出现。
语法形式为 () -> {},其中 () 用来描述参数列表,{} 用来描述方法体,-> 为 lambda运算符 ,读作(goes to)。
1.2 Lambda表达式常用示例
-
Lambda表达式引用方法
有时候我们不是必须要自己重写某个匿名内部类的方法,我们可以可以利用 lambda表达式的接口快速指向一个已经被实现的方法。
语法:
方法归属者::方法名
静态方法的归属者为类名,普通方法归属者为对象
-
构造方法
-
创建线程
-
遍历集合
-
排序
1.3 参考资料
参考链接:https://www.cnblogs.com/haixiang/p/11029639.html
二、Stream流
https://blog.csdn.net/weixin_38294999/article/details/89277697
三、实例
3.1 需求1:List里面的元素,以某个属性来分组成Map<Object, List。
例如,以id分组,将id相同的放在一起:
代码:
public class Test{
public static void main(String[] args){
List<Apple> list = new ArrayList<>();
Apple apple = new Apple(1,"苹果1",new BigD