Java之 1.8新特性

Posted 悠悠一小生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java之 1.8新特性相关的知识,希望对你有一定的参考价值。

1.Lambda表达式
  使用前提
    1.必须是函数式接口
    2.必须参数和局部变量等等都要一一对应
  标准格式
    (参数类型 参数名)->{ 方法体}():方法的参数 没有则不写 如果多个 ,隔开
      ->:代表指向动作
      {}:重写方法 方法体的内容
  省略格式规则
    1.参数类型可以省略 (Person p) (p)
    2.如果只有一个参数 ()可以省略 (Person p) p
    3.如果方法体中只有一条语句 {} return ;都可以省略 但是如果省略 必须全部省略
2.函数式接口
  定义:只有一个抽象方法的接口(但是可以有其他方法 例如 私有 静态 默认)
  可以使用@FunctionalInterface来验证一个接口是否是函数式接口 是 不报错 不是报错

  常用的4个函数式接口
    Supplier<T>接口 生产型接口
    T get() 获取一个指定泛型数据类型的数据

    Consumer<T>接口 消费型接口
    void accept(T t) 对指定泛型类型的数据进行消费(处理)
    andThen一步接一步 操作的是多个Consumer对象

    Function<T,R>接口 类型转换的接口
    R apply(T t) 根据T类型的数据获取R类型的结果
    andThen一步接一步 操作的是多个Function对象

    Predicate<T> 接口 判断型接口
    boolean test(T t) 对传入的参数可以进行判断返回boolean类型结果
    and,or,negate 并且 或者 取反
3.方法引用
  对象名引用成员方法
    对象名::方法名
      Assistant a = new Assistant();
      a::dealFile
  类名引用静态方法
    类名::静态方法名
      Integer::parseInt
  类名引用构造方法
    类名::new
      Person::new
  数组引用构造
    int[]::new
    String[]::new
4.Stream流
  获取流
    1.Collection的stream()方法
    2.Stream的静态方法of(T...t)
      forEach(Consumer<T> con)
        对流中的元素逐一处理 我们通常都是打印 遍历 终结方法只能调用一次

      long count()
        Stream中元素的个数 终结方法只能调用一次
      limit(long n)
        获取前n个元素 返回Stream对象
      skip(long n)
        跳过前n个元素 返回Stream对象
      filter((Predicate<T> predicate)
        过滤条件
      map(Function<T,R> f)
        将一种类型的Stream转换为另一种类型的Stream
      static Stream concat(Stream s1 ,Stream s2)
        静态方法 将两个流合并成一个流

  将Stream转换为集合
    List<String> list = stream.collect(Collectors.toList());
    Set<String> set = stream.collect(Collectors.toSet());
  将Stream转换为数组
    Object[] objArray = stream.toArray();
    String[] strArray = stream.toArray(String[]::new);

 







































































以上是关于Java之 1.8新特性的主要内容,如果未能解决你的问题,请参考以下文章

Java 8新特性之接口改善(八恶人-1)

java 1.7 1.8新特性

Java 1.8 新特性

java 1.8 新特性 stream

Java1.7与1.8新特性

java1.8新特性