当前位置: 首页 > article >正文

JDK1.8新增特性

新特性:

        Lambda表达式: (语法三要素:参数、箭头、代码)

               JDK1.8引入的一种新语法Lambda表达式,它简化了匿名内部类的使用和提高代码的可读性。

/**正常写法创建Runable**/
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("*************");
    }
};

/**Lambda表达式写法*/
Runnable runnable = () -> System.out.println("*************");

       接口提供默认方法和静态方法:

public interface UserService {
    /**
     * 默认方法
     */
    default void add(){
        System.out.println("add");
    };
   
    /**
     * 静态方法
     * @param id
     * @return
     */

    public static User getUser(String id){
        return new User();
    };
}

        Stream API :

               JDK1.8引入的一种新抽象流,提供一种新的处理数据方式,对集合或数据元素进行函数式编程数据处理;所有 Collection 集合都可以通过 stream 默认方法获取流。

  List<String> list = Arrays.asList("ASDSFSDSF","NBDS","WKEKRERE","BC8D");
            
  //通过stream流过滤列表中长度等4的字符串列表
  List<String> newList = list.stream().filter(pre->pre.length()==4).collect(Collectors.toList());
  //通过stream流把列表内容转换小写并返回一个新的列表
  List<String> toLowerCaseList = list.stream().map(String::toLowerCase).collect(Collectors.toList());
  //获取集合长度
  long count = list.stream().count();
  //获取集合第1个元素
  Optional<String> first = list.stream().findFirst();

        函数试接口 :

            1、自定义函数试接口 

@FunctionalInterface
public interface MyFunctionalInterface {
    int add(int a,int b);
}
//调用
MyFunctionalInterface myFunctionalInterface = (a,b)-> a+b;
int a = myFunctionalInterface.add(5,2);
System.out.println(a);

              2、Predicate<T>:判断型接口输入一个参数T,返回一个布尔值

 Predicate<String> isEmpty = p -> p.isEmpty();
 // 输出: false
 System.out.println(isEmpty.test("abc"));

             3、Function<T,R>:函数试接口有输入参数T和返回结果R,用于执行一些转换逻辑。

Function<Integer, Integer> function = (Integer i) -> i * i;
// 输出: 100
System.out.println(function.apply(10));

            4、Supplier<T>:供给型接口,无参数返回数据类型T。

            5、Consumer<T>:消费型接口,有参数T,无返回值。

public class User {
    public void follow(final String str) {
        System.out.println("Following the " + str);
    }
}

Consumer<String> follow = user :: follow;
follow.accept("Consumer....");

        方法引用 :

                1、构造器引用: ClassName::new
                2、类的静态方法引用: ClassName::staticMethodName
                3、对象的实例方法引用: object::methodName
                4、特定类型的实例方法引用:TypeName::methodName

        LocalDate API : 

                1、LocalDate : 年月日;

                2、LocalTime : 时分秒;

                3、LocalDateTime : 年月日时分秒;

                4、Period : 两个日期之间的时间间隔;

                5、Duration : 两个时间之间的持续时间;

                


http://www.kler.cn/a/410213.html

相关文章:

  • Easyexcel(6-单元格合并)
  • 深度学习day4-模型
  • 华为无线AC+AP组网实际应用小结
  • 即时通讯服务器被ddos攻击了怎么办?
  • 【MySQL】数据库核心技术与应用指南
  • Vue——【路由】
  • Java 面经 - HashMap
  • 深入探索Go语言中的sync.Mutex与sync.RWMutex:原理、应用与实践
  • Git Github Gitlab与Gitee的关系
  • 如何在 Eclipse 中调试ABAP程序
  • 【vim】vim怎么把某一列内容复制到另一列
  • 长短时记忆网络(SLTM):理解与实践
  • 基于web的音乐网站(Java+SpringBoot+Mysql)
  • 用 Python 从零开始创建神经网络(十):优化器(Optimizers)(持续更新中...)
  • 利用Google的OR-Tools解决智能调度问题
  • 小程序-基于java+SpringBoot+Vue的美食推荐系统设计与实现
  • 无监督跨域目标检测的语义一致性知识转移
  • vxe-grid table 修改表格数据校验的主题样式
  • 深入解析分布式遗传算法及其Python实现
  • 基于YOLOv8深度学习的智慧农业棉花采摘状态检测与语音提醒系统(PyQt5界面+数据集+训练代码)
  • 一场开源视角的AI会议即将在南京举办
  • 线性代数空间理解
  • CHIMA网络安全攻防大赛经验分享
  • STM32F103C8T6实时时钟RTC
  • 高级java每日一道面试题-2024年11月24日-JVM篇-说说对象分配规则?
  • 【PHP】 基础语法,自学笔记(二)