MENU

Java8、Java11新特性/Stream/MapReduce

2024 年 10 月 20 日 • 访问: 239 次 • Java

java8特性

  1. lambda表达式。把函数作为一个方法的参数,也叫闭包相对应的,还多了函数式接口,二者可以配合使用
  2. Stream api

    • 提供一种对Java集合运算和表达的高阶抽象,引入map、reduce等方法。
    • map方法中还支持 类名::方法名 的调用方式,来单独调用方法
      map(a->a.getX())简写成了map(A::getX)
  3. 新增了接口的默认方法,支持default实现了
  4. 新增Optional 类,解决空指针判断问题
  5. 新增Base64编码库

JAVA11新特性

(1)支持局部变量类型推断
可以写var这种变量声明了,编译器能自动识别,可加快部分情况下的编程速度。

var a = 1;
var s = “abcd”;

但是会加重编译器负担。

(2)字符串api增强

public static void main(String[] args) {

    String str1 = "\t \n\r ";
    //判断字符串是否是空白字符
    System.out.println(str1.isBlank());
    System.out.println("*****===========");
    str1 = "\t abc \r \n  ";
    //去除字符串首尾中的空白,包括英文和其它所有语言的空白字符
    String strip = str1.strip();
    //去除字符串首部的空白,包括汉字
    String stripLeading = strip.stripLeading();
    //去除字符串尾部的空白,包括汉字
    String stripTrailing = strip.stripTrailing();
    System.out.println(strip+"<====>"+strip.length());

    str1 = "java";
    str1.repeat(3);//把str1 重复三次,输出   javajavajava

    //去除字符串首尾中的空白,只能去除码值小于32的(如果是中文全角的空白是去除不了的)
    String trim = str1.trim();
    System.out.println(trim+"<====>"+trim.length());
}

(3)stream增强

  • 支持Stream.ofNullable(null)生成一个值的流
  • 支持while循环,符合一个条件就take结束或者开始计算
// 从第一个开始计算,当 n < 3 时就截止
Stream.of(1, 2, 3, 2, 1).takeWhile(n -> n < 3) .collect(Collectors.toList()); // [1, 2]

// 一开始不计算,当n<3不成立时开始计算
Stream.of(1, 2, 3, 2, 1).dropWhile(n -> n < 3) .collect(Collectors.toList()); // [3, 2, 1]

(4)Optional增强:支持orElseThrow等语法。

(5)正式引入HTTP Client API,和Apache 的 HttpClient的区别?

(6)支持jshell,类似py shell:可以节省验证demo的时间

(7)默认使用G1收集器,且jvm和垃圾收集有关的参数设置进行了很多调整

返回文章列表 打赏
本页链接的二维码
打赏二维码