A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 84818684 中级黑马   /  2019-4-11 13:55  /  650 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1. #### 函数式接口

- 规则:一个接口且仅有一个抽象方法
- 注解:@FunctionalInterface

2. #### 函数式接口的使用

- 作为变量初始化
  接口类型 变量 = lambda表达式; (参数列表) -> {}
- 作为方法参数
  public static 方法名(函数式接口 变量1){
                变量1.方法(参数列表);
              }               
              方法名(lambda表达式);
- 作为方法返回值       
  public static 函数式接口 方法名(){       
                      return lambda表达式;
              }       

3. #### JDK提供的常用的函数式接口

- Supplier<T>  {   T get();}
  根据指定的Supplier<泛型>,通过lambda表达式一定逻辑返回指定泛型的数据
- Consumer{ void accept(T t); default andthen(Consumer con);}
  消费数据,由lambda表达式进行处理
- Predicate<T> {
  boolean test(T  t);  
              default Predicate and(Predicate other);
              default Predicate or(Predicate other);
              default Predicate negate(Predicate other);
  }
  将传入参数进行逻辑处理,得到boolean值
- Function<T,R>{
                    R apply(T t);
                    default Function andThen(Function after);       
            }
    将指定参数经过一定的逻辑处理得到转换的结果

4. #### Stream流:

- 简化对集合或者数组等的一系列操作,包含循环,过滤,统计等等       

- Stream操作的三个环节
  常用生成流
          Collection集合的stream()的方法--- list set
          Map集合借助keySet(),values,entrySet()
          使用Stream类的静态方法of()对数组或者多参进行流的转化
  中间操作
          filter:过滤
          limit:截取
          skip:跳过
          concat:合并
          distinct:去重
          sorted:
          sorted(Comparator c):
          map:将流转换其他类型的流
          mapToInt:转换为int
  终结操作
          forEach:循环处理
          count:统计个数

  流的收集:将流中的数据收集到集合中,方便后续的使用
          将流数据收集到list中:   List<泛型> list = stream.collect(Collectors.toList())
          将数据收集到set中: Set<泛型> set = stream.collect(Collectors.toSet())
          将流数据收集到Map: Map<泛型1,泛型2> map = stream.collect(Collectors.toMap( Function keyMapper,Function valueMapper  ));

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马