zoukankan      html  css  js  c++  java
  • jdk1.8新特性

    JDK1.8新特性

    Lamdba表达式(函数式编程)

    用法

    ()->{}
    方法参数 方法要实现的内容

    以Lambda语法创建线程和匿名内部类创建线程的区别(显然代码少了很多!):

        //匿名内部类
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("hello");
            }
        })
        //Lambda表达式,实际就是创建出该接口的实例对象
        new Thread(()->{System.out.println("hello")});
    
    • Lambda返回的是接口的实例对象

    • 有没有参数、参数有多少个、需不需要有返回值、返回值的类型是什么---->选择自己合适的函数式接口

    函数式编程接口

    函数接口,是指内部只有一个抽象方法的接口

    JDK原生就给我们提供了一些函数式编程接口方便我们去使用,下面是一些常用的接口:

    方法引用

    如果函数式接口的实现恰好可以通过调用一个方法来实现,那么我们可以使用方法引用

    分类

    • 静态方法的方法引用

    • 非静态方法的方法引用

    • 构造函数的方法引用

    stream

    是什么

    Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。

    这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。

    元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。

    为什么用
    • 方便并发
    • 代码量少(直接调用API)
    如何使用

    分三步

    1. 创建Stream流
    2. 通过Stream流对象执行中间操作
    3. 执行最终操作,得到结果
    创建流
    /**
     * 返回的都是流对象
     * @param args
     */
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        // 从集合创建
        Stream<String> stream = list.stream();
        Stream<String> stream1 = list.parallelStream();
    
        // 从数组创建
        IntStream stream2 = Arrays.stream(new int[]{2, 3, 5});
    
        // 创建数字流
        IntStream intStream = IntStream.of(1, 2, 3);
    
        // 使用random创建
        IntStream limit = new Random().ints().limit(10);
    
    }
    
    执行中间操作
    String str = "my name is 007";
    Stream.of(str.split(" ")).filter(s->s.length()>2)
    .map(s->s.length()).foreach(System.out::println);
    
    • filter:过滤
    • map:映射
    • parallel:并行处理
    执行最终操作

    懒加载,调用了最终操作的方法,Stream才会执行
    最终操作和中间操作的判断根据返回值:
    中间操作返回的是Stream实例对象

  • 相关阅读:
    POJ 3672 水题......
    POJ 3279 枚举?
    STL
    241. Different Ways to Add Parentheses
    282. Expression Add Operators
    169. Majority Element
    Weekly Contest 121
    927. Three Equal Parts
    910. Smallest Range II
    921. Minimum Add to Make Parentheses Valid
  • 原文地址:https://www.cnblogs.com/yks43/p/14393203.html
Copyright © 2011-2022 走看看