JDK8新特性

默认方法

简述:接口可以有这个方法,而且不需要非得去创建实现类去实现这个方法

JDK8之前如果有大量实现的接口有变动,那么实现类也会跟着变动,修改起来工作量大且麻烦,所以就加入了默认方法特性

public interface Test {
    default String test();
}
lamda表达式

简述:Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。

作用:使用 Lambda 表达式可以使代码变的更加简洁紧凑。

例如:

public class Lambda {
    
    private static String test() {
        return String;
    }

    public static void main(String[] args) {
        new Thread(() -> Lambda::test);
    }
}

注意:

不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误

如果lambda中的逻辑比较复杂 建议使用方法引用

格式:

//类名或对象名::方法名
User::getUserName
//类的构造方法
User::new
常用函数式接口
Runnable r = () -> System.out.printf("say hello");//没有输入参数,也没有输出
Supplier<String> sp = () -> "hello";//只有输出消息,没有输入参数
Consumer<String> cp = r -> System.out.printf(r);//有一个输入参数,没有输出
Function<Integer, String> func = r -> String.valueOf(r);//有一个输入参数 有一个输出参数
BiFunction<Integer, Integer, String> biFunc = (a, b) -> String.valueOf(a + b);//有两个输入参数 有一个输出参数
BiConsumer<Integer, Integer> biCp = (a, b) -> System.out.printf(String.valueOf(a + b));//有两个输入参数 没有输出参数
Stream流
  • 流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。
  • 具有filter, map, reduce, find, match, sorted等操作。
  • 具有中间操作终止操作 中间操作后可继续操作 终止操作后不可对流进行操作

例:大于十八岁的人的体重总和

List<User> list = 
userList.stream()
             .filter(b -> b.age>= 18)
             .mapToInt(User::getWeight)
             .sum();
List的removeIf方法

removeIf() 方法用于删除所有满足特定条件的数组元素。

例:删除集合中大于2的元素

   public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.removeIf(i -> i >= 2);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值