JDK8 特性 持续更新
- 1、Lambda表达式【jdk8核心特性】
- 2、Stream
- 3、日期时间
- 4、Join() 字符串拼接
1、Lambda表达式【jdk8核心特性】
介绍:
Lambda 表达式,也可称为闭包,它是推动 java 8 发布的最重要新特性。
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
使用 Lambda 表达式可以使代码变的更加简洁紧凑。
语法:
(parameters) -> expression
或
(parameters) ->{ statements; }
重要特征:
特性 | 说明 | 案例 |
---|---|---|
可选类型声明 | 不需要声明参数类型,编译器可以统一识别参数值。 | x -> 2 * x |
可选的参数圆括号 | 一个参数无需定义圆括号,但多个参数需要定义圆括号。 | x -> 2 * x |
可选的大括号 | 如果主体包含了一个语句,就不需要使用大括号。 | (x, y) -> x – y |
可选的返回关键字 | 如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。 | (String s) -> System.out.print(s) |
Lambda 表达式案例解释说明:
// 1. 不需要参数,返回值为 5
() -> 5
// 2. 接收一个参数(数字类型),返回其2倍的值
x -> 2 * x
// 3. 接受2个参数(数字),并返回他们的差值
(x, y) -> x – y
// 4. 接收2个int型整数,返回他们的和
(int x, int y) -> x + y
// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)
(String s) -> System.out.print(s)
2、Stream
函数:
函数名 | 解释 |
---|---|
.foreach() | 遍历循环 |
.collect(Collectors) | 转换为其他形式 ,例如:list.stream().collect(Collectors.toList()); |
.filter( ) | 筛选,过滤特定数据 |
.sorted() | 排序,默认升序、sorted(Comparator.comparing(对象::属性))降序 |
.map(Function f)) | 接收流中元素,并且将其映射成为新元素,例如:使用前【admin,zs,ww】list.Stream.map(e -> e.getName() + “531”) 使用后: 【admin531,zs531,ww531】 |
.limit(long n) | 断截流,取前n个元素 |
.count | 返回总数 |
.mapToDouble(对象::属性) | 将对象中的某一个属性转为Double类型 |
.sum() | 求和 |
`2.1 Collectors配套方法:
函数名 | 解释 |
---|---|
.toListA() | 将流转为List集合 |
.toSet() | 将流转为Set集合 |
.toMap() | 将流转为Map集合 |
.groupingBy(对象::属性) | 根据对象中的某个数据分组 |
3、日期时间
java.time包
apl | 解释 |
---|---|
Local(本地) | 简化了日期时间的处理,没有时区的问题。LocalDateTime currentTime = LocalDateTime.now(); |
Zoned(时区) | 通过制定的时区处理日期时间。 |
4、Join() 字符串拼接
String.Join(‘分割符’,数组)
意为指定拼接数组字符的连接符号
//案例:
List<Object> list = new ArrList<Object>();
list.add("zs");
list.add("ls");
list.add("ww");
String join = String.Join('-',list)
System.out.println(join);
//结果:zs-ls-ww