JAVA8 IN ACTION

203 阅读1分钟

Lambda表达式

这个属于是经典中经典了,lambda表达式,常见方法由创建匿名类和简单函数式编程
匿名类 new Thread(()->{System.out.println(123)});

简单函数式编程

  • Consumer:void accept(T t);
  • Supplier: T get();
  • Function<T,R>:R apply(T t);
  • Predicate: boolean test(T,t); 传入参数只要参数列表和返回值和函数接口一致,就可以使用静态替换,例如System.out::println就是Consumer接口的实现。

Stream处理

数组获取Stream
Arrays.Stream(arr);

集合获取Stream list.stream() set.stream(); map.entrySet().stream()

Stream基本操作

中间操作

  • filter 过滤数据
  • map 转换数据
  • distinct
  • skip 跳过前N个元素
  • flatMap 将多个流合并为一个流
  • limit
  • sorted 最终操作
  • collect 转换成集合
  • forEach 遍历
  • count 计数
  • anyMatch 匹配任意一个返回true
  • allMatch 全部匹配返回true
  • noneMatch 全部不匹配 返回true
  • findAny 返回任意一个
  • findFirst 返回第一个
  • reduce 2种重载方法reduce(0,(a,b)->{}); reduce((a,b)->{});

数值流

  • mapToInt
  • mapToLong
  • mapToDouble
  • boxed 装箱
  • max
  • sum

生成数据流

  • Arrays.stream()
  • list.stream()
  • set.stream()
  • map.entrySet().stream()
  • IntStream.rangeClosed(start,end) 生成一个[start,end]的流
  • Stream.of(obj1,obj2,obj3)
  • Stream.iterator(T seed,Supply) 生成的是一个无限流
  • Stream.generator(Supply()) 生成的是一个无限流