Java8新特性学习,lambda表达式与stream

Java8新特性学习

Lambda表达式

写法(参数列表)->{实现} 如果实现一行本身是函数主体,可以省略括号

函数式接口

  • 一个接口中定义了唯一一个抽象方法
  • 通过@FunctionalInterface 进行注解
  • 改进了匿名内部类

例如

        new Thread(new Runnable(){

            @Override
            public void run() {
                // TODO Auto-generated method stub
                System.out.println("匿名");
            }
            
        }).start();

可以写为

        new Thread(() -> {
            System.out.println("Lambda");
        }).start();

Stream流

生成方式

  • Collection通过.stream生成
  • Map体系的集合间接生成。比如map.keySet()得到键的集合再生成。
  • 数组通过Stream的静态方法。

String[] st = {"woc","nm"}
Stream<String > stream = Stream.of(st);
也可以直接传递可变参数例如
Stream.of(1,2,3,4,4)

常见的中间操作方法

  • filter(Predicate)

Predicate boolean test(T t);

  • limit() 截取指定参数个数的数据。
  • .skip() 跳过指定参数
  • .distinct() 返回不重复元素
  • 静态方法Stream.contact(s1,s2)合并流
  • sorted([比较器])
  • 收集方法

liststream.collect(Collectors.toList())将流的数据收集到List
Collectors.groupingBy(分组,[操作])
例如获得一个Map
Map<String,Long> = stringList.stream().collect(Collectors(groupingBy(x->x,Collectors.countint())))

Sink接口

原文地址:https://www.cnblogs.com/lizinuo/p/15375333.html