[Java] JDK11

2. JDK11 语法

2.0 var

var 类型推断

    @Test
    public void t1() {

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

        Consumer<String> c2 = (var t) -> System.out.println(t.toUpperCase());
        c2.accept("a");

//        错误的形式: 必须要有类型, 可以加上var
//        Consumer<String> c3 = (@Deprecated t) -> System.out.println(t.toUpperCase());
//        正确的形式:
        Consumer<String> 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<Object> s1 = Stream.of(null);
        s1.forEach(System.out::println);

        // 传入一个null,使用流对象进行检测,如果是null,则过滤掉
        Stream<Object> s2 = Stream.ofNullable(null);
        s2.forEach(System.out::println);
    }

2.1.2 takeWhile() 与 dropWhile()

    @Test
    public void t2(){
        Stream<Integer> stream1 = Stream.of(1, 1, 3, 2, 2, 3, 4, 5);
        // takeWhile:一直拿(条件为True),拿不到(条件为False)则终止
        // 取奇数 1 1 3,2不是奇数,所以到2就停止了
        Stream<Integer> 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
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!