【总结】java8特性

1.lambda表达式

Lambda 表达式,也可称为闭包。主要作用有简化代码(集合遍历,匿名内部类)

    public static void main(String[] args) {
        // 1 - 简化遍历
        List<String> list = Arrays.asList("aa", "bb", "cc");
        list.forEach(str -> {  //foreach的入参Consumer 就是java定义的一个函数式接口
            str += "a";
            System.out.println(str);
        });

        Map<String, String> aMap = new TreeMap<>();
        aMap.put("Aluka", "AluWife");
        aMap.put("GodV", "mifengaaa");
        aMap.put("zz", "lym");
        aMap.forEach((k, v) -> System.out.println(k + " " + v));

        // 2 - 简化匿名内部类
        Thread t1 = new Thread(() -> System.out.println(Thread.currentThread().getName() + "线程创建"));

        Runnable runnable = () -> System.out.println(Thread.currentThread().getName() + "线程创建");
        Thread t2 = new Thread(runnable);
        
    }

2.方法引用

方法引用通过方法的名字来指向一个方法
方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
方法引用使用一对冒号 ::

public class Java8Tester {
   public static void main(String args[]){
      List<String> names = new ArrayList();
      names.add("Google");
      names.add("Runoob");
      names.forEach(System.out::println);
   }
}

3.Stream流

Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象
(1) forEach :迭代流中的每个数据

        Random random = new Random();
        random.ints().limit(10).forEach(System.out::println);

(2)map:方法用于映射每个元素到对应的结果

        List<Integer> collect = numbers.stream().map(i -> i * i).distinct().collect(Collectors.toList());
        collect.forEach(System.out::println);

(3)filter:方法用于通过设置的条件过滤出元素

List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
// 获取空字符串的数量
long count = strings.stream().filter(string -> string.isEmpty()).count();

(4)limit: 方法用于获取指定数量的流

Random random = new Random();
random.ints().limit(10).forEach(System.out::println);

(5)sorted: 方法用于对流进行排序

Random random = new Random();
random.ints().limit(10).sorted().forEach(System.out::println);

(6)parallelStream: 是流并行处理程序的代替方法

List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
// 获取空字符串的数量
long count = strings.parallelStream().filter(string -> string.isEmpty()).count();

(7)Collectors: 类实现了很多归约操作,例如将流转换成集合和聚合元素。Collectors 可用于返回列表或字符串

List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
String mergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(", "));

4.默认方法

Java 8 新增了接口的默认方法。
简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。
我们只需在方法名前面加个 default 关键字即可实现默认方法。

解决:接口增加一个方法后,必须在实现类中都实现

posted @ 2021-01-14 14:25  mu_阿成  阅读(83)  评论(0)    收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css