Java -8 新特性学习

  • 函数式接口:如果一个接口中只声明了一个抽象方法,则此接口称为函数式接口
  • 我们可以在函数式接口上添加注解@FunctionInterface来检验该接口是否是函数式接口
  • Java8 为我们提供了丰富的函数式接口,其中四大核心(Consumer,supplier,Function,Predicate)
    实际应用中Consumer、Predicate两个接口使用的比较多,均可采用函数式编程
  • 方法应用和构造器引用
    使用格式===>类(对象)::方法名
    具体分为三种:
    对象::非静态方法
    类::静态方法
    类::非静态方法
  • Java新特性之二-------Stream API
    • Stream和Collection之间区别
      | Collection:是一种静态的内存数据结构,主要面向内存的
      | Stream:是有关计算的,主要面向的是计算

    • Stream解释
      | 一个中间操作链,对数据源的数据进行处理
      | 一旦执行中间操作,就会产生结果,之后便不会在被使用

    • Stream使用
      | 集合转变为stream
      * 集合.stream() ===>返回的是一个顺序流
      * 集合.parallelStream() ===>返回的是一个并行流
      * 顺序流和并行流的区别类似于linkedhashmap和hashmap的区别,并行流的效率要高于顺序流
      | 数组转变为stream
      使用Arrays.stream() 方法将数组转变为流
      | 使用Stream.of() ==>静态方法来转变为流
      eg: Stream.of(1,2,3).forEach(System.out::println);
      | 创建无限流
      * Stream.iterate()
      * Stream.generate()
      | StreamAPI中强大的筛选和切片
      * filter(Predicate p)
      * limit(Integer n) ===> 截取给定数量的元素
      * skip(Integer n) ===> 顺序流,跳过前n个元素
      * distinct() ===>根据元素的hashcode和equals方法来去重
      | StreamAPI中的映射
      * map ===>将流中的元素按照颐一定规则映射出来
      * flatMap ===>解决的是嵌套的元素,会将所有元素打开形成一个个元素,然后将这些元素重新组合成新的流
      * 理解一下二者之间的区别!!!

你可能感兴趣的:(Java -8 新特性学习)