java11协议,[Java] JDK11

2. JDK11 语法

2.0 var

var 类型推断

@Test

public void t1() {

Consumer c1 = t -> System.out.println(t.toUpperCase());

Consumer c2 = (var t) -> System.out.println(t.toUpperCase());

c2.accept("a");

// 错误的形式: 必须要有类型, 可以加上var

// Consumer c3 = (@Deprecated t) -> System.out.println(t.toUpperCase());

// 正确的形式:

Consumer c3 = (@Deprecated var t) -> System.out.println(t.toUpperCase());

}

2.1 Stream

2.1.1 Stream.ofNullable 对null的过滤

@Test

public void t1(){

// 传入null会被解析成一个数组对象,会进一步访问他的长度信息,故不安全,null时会抛异常

Stream s1 = Stream.of(null);

s1.forEach(System.out::println);

// 传入一个null,使用流对象进行检测,如果是null,则过滤掉

Stream s2 = Stream.ofNullable(null);

s2.forEach(System.out::println);

}

2.1.2 takeWhile() 与 dropWhile()

@Test

public void t2(){

Stream stream1 = Stream.of(1, 1, 3, 2, 2, 3, 4, 5);

// takeWhile:一直拿(条件为True),拿不到(条件为False)则终止

// 取奇数 1 1 3,2不是奇数,所以到2就停止了

Stream stream2 = stream1.takeWhile(t -> t % 2 != 0);

stream2.forEach(i->log.info("no1:" + i));

log.info("---");

// dropWhile:一直抛弃(条件为True),(条件为False)不再抛弃才开始拿

// 1 1 3 都是奇数,都要抛弃,2不是奇数,从2开始一直拿

stream1 = Stream.of(1, 1, 3, 2, 2, 3, 4, 5);

stream2 = stream1.dropWhile(t -> t % 2 != 0);

stream2.forEach(i->log.info("no2:" + i));

}

输出:

01:09:00.924 [main] INFO com.lee.jdk11.study.sgg.StreamTest - no1:1

01:09:00.926 [main] INFO com.lee.jdk11.study.sgg.StreamTest - no1:1

01:09:00.926 [main] INFO com.lee.jdk11.study.sgg.StreamTest - no1:3

01:09:00.926 [main] INFO com.lee.jdk11.study.sgg.StreamTest - ---

01:09:00.928 [main] INFO com.lee.jdk11.study.sgg.StreamTest - no2:2

01:09:00.928 [main] INFO com.lee.jdk11.study.sgg.StreamTest - no2:2

01:09:00.928 [main] INFO com.lee.jdk11.study.sgg.StreamTest - no2:3

01:09:00.929 [main] INFO com.lee.jdk11.study.sgg.StreamTest - no2:4

01:09:00.930 [main] INFO com.lee.jdk11.study.sgg.StreamTest - no2:5

本作品采用《CC 协议》,转载必须注明作者和本文链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值