Java基础:JDK8 Stream 的方法应用
JDK 8 的新特性中包含了一个新的 Stream API,可以写出高效、干净、简洁的代码。
Stream 操作将要处理的集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理, 比如筛选, 排序,归集等。
Stream 不是数据结构,并不保存数据,它的主要目的在于计算。
Lambda 和 Stream 存在的最大最大缺点是不好调试。不过 IDEA 2019 已集成了 Stream 的调试插件 Java Stream Debugger。
JDK 8 的新特性中包含了一个新的 Stream API,可以写出高效、干净、简洁的代码。
Stream 操作将要处理的集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理, 比如筛选, 排序,归集等。
Stream 不是数据结构,并不保存数据,它的主要目的在于计算。
Lambda 和 Stream 存在的最大最大缺点是不好调试。不过 IDEA 2019 已集成了 Stream 的调试插件 Java Stream Debugger。
汇总 Java 的各种随机数生成方式,而不仅只有 java.util.Random 。
函数式接口 就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口(default 修饰),这又关联了 Java 8 的另一个新特性,允许在接口中定义默认方法(default 修饰)。
函数式接口是行为的抽象,是数据转换。其最直接表现是将函数(行为)作为数据传递进方式中。
函数式编程的一大好处,是可以用更精练的代码来表达常用数据处理。函数接口能够轻易地实现模板方法模式,只要将不确定的业务逻辑抽象成函数接口,然后传入不同的 Lambda 表达式即可。
HashMap 是 Java 中非常重要的集合类型,其具有快速存储,快速查找(时间复杂度非常低,非效非常高),自动扩容等特点,在实际开发中经常用到。
关于 HashMap 特性,底层原理也是面试中被问到概率极高的问题,因为 HashMap 涉及到好几个基本数据结构及相关算法知识,如组数,链表,二叉树及变种,Hash算法等。所以有必要对其深入理解。
项目开发中经常需要将 List 转 Map 的操作,可以使用 for 循环,或 JDK 1.8 提供的 Stream 流,或 Google 的 Guava 集合库来实现。
因为 Date 实在不方便,特别是在日期计算时难用,并且格式化是非线程安全的。
JDK 8 提供 LocalDate, LocalTime, LocalDateTime 可以更方便操作日期时间,是线程安全的。
在 JDK 8 出来之前,大多会使用第三方库 Joda 来操作日期时间,GitHub joda-time。
国内工具类 Hutool 也提供了日期时间工具类,可以方便操作。
CentOS 和 Ubuntu 下安装 Oracle JDK,Ubuntu 卸载自带的 OpenJDK。
Windows 环境安装可执行包,配置系统属性的环境变量。