栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JDK8新特性

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 sp = () -> "hello";//只有输出消息,没有输入参数
Consumer cp = r -> System.out.printf(r);//有一个输入参数,没有输出
Function func = r -> String.valueOf(r);//有一个输入参数 有一个输出参数
BiFunction biFunc = (a, b) -> String.valueOf(a + b);//有两个输入参数 有一个输出参数
BiConsumer biCp = (a, b) -> System.out.printf(String.valueOf(a + b));//有两个输入参数 没有输出参数
Stream流
  • 流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。
  • 具有filter, map, reduce, find, match, sorted等操作。
  • 具有中间操作终止操作 中间操作后可继续操作 终止操作后不可对流进行操作

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

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

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

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

   public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.removeIf(i -> i >= 2);
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/324492.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号