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

    一、函数式编程

    1、lambda 表达式

    参数值 -> 函数体内容,例如:

    // Java 8之前:
    new Thread(new Runnable() {
    @Override
    public void run() {
    System.out.println("Before Java8, too much code for too little to do");
    }
    }).start();

    //Java 8方式:
    new Thread( () -> System.out.println("In Java8, Lambda expression rocks !!") ).start();

    其它使用场景还有:事件处理,事件监听代码;对列表进行迭代(list.forEach(n -> System.out.println(n));)

    右边的函数体也可以多行,用花括号包起来,例如:

    new Thread( () -> {System.out.println("In Java8, Lambda expression rocks !!") ;System.out.println('test');}).start();

    2、方法引用

    某些lambda表达式里面仅仅是执行一个方法调用。在这种情况下,不用lambda表达式,直接通过方法名称引用方法的形式可读性更高一些,这种形式就是方法引用,方法引用是一种更简洁易懂的lambda 表达式。

    Arrays.sort(stringsArray, String::compareToIgnoreCase);
    就相当于

    Arrays.sort(stringsArray,(s1,s2)->s1.compareToIgnoreCase(s2));
    直接通过方法引用来简写lambda表达式中已经存在的方法

    二、集合新操作

    1、通过过滤创建一个String列表

    // 创建一个字符串列表,每个字符串长度大于2
    List<String> filtered = strList.stream().filter(x -> x.length()> 2).collect(Collectors.toList());

    2、对列表的每个元素应用函数

    // 将字符串换成大写并用逗号链接起来
    List<String> G7 = Arrays.asList("USA", "Japan", "France", "Germany", "Italy", "U.K.","Canada");
    String G7Countries = G7.stream().map(x -> x.toUpperCase()).collect(Collectors.joining(", "));
    System.out.println(G7Countries);

    3、去掉重复元素

    List<Integer> numbers = Arrays.asList(9, 10, 3, 4, 7, 3, 4);

    List<Integer> distinct = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());

    4、计算集合元素的最大值、最小值、总和以及平均值

    List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11, 13, 17, 19, 23, 29);

    IntSummaryStatistics stats = primes.stream().mapToInt((x) -> x).summaryStatistics();

    System.out.println("Highest prime number in List : " + stats.getMax());

    System.out.println("Lowest prime number in List : " + stats.getMin());

    System.out.println("Sum of all prime numbers : " + stats.getSum());

    System.out.println("Average of all prime numbers : " + stats.getAverage());

     
  • 相关阅读:
    第二阶段冲刺第1天
    每周总结(5.30)
    每周总结(5.23)
    个人作业——顶会热词进程2.3
    个人作业——顶会热词进程2.2
    c#日期相关代码
    Linux服务器安装mysql
    Linux运行yum时出现/var/run/yum.pid已被锁定,PID为xxxx的另一个程序正在运行的问题解决
    【转】火狐浏览器js转换日期问题
    docker流程
  • 原文地址:https://www.cnblogs.com/ptw-share/p/6928176.html
Copyright © 2011-2022 走看看