函数式接口 参数类型 返回类型 方法 消费型 ConsumerT void void accept(T t); 供给型 Supplier 无 T T get(); 函数型 Function T R R apply(T t); 断言型 Predicate T boolean boolean test(T t); 增强版消费型 BiConsumer T,U void void accpet(T t, U u); 函数型子接口 UnaryOperator T T T apply(T t); 增强版函数型 BiFunction T,U R R apply(T t, U u); BiFunction子接口 BinaryOperator T,T T T apply(T t1, T t2); 增强版断言型 BiPredicate T,U boolean boolean test(T t, U u);
Stream流: 中间操作:筛选与切片 filter(Predicate p) 接收Lambda ,从流中排除某些元素。 distinct() 筛选,通过流所生成元素的hashCode()和equals()去除重复元素。 limit(long maxSize) 截断流,使其元素不超过给定数量。 skip(long n) 跳过元素,返回一个扔掉了前n个元素的流。若流中元素不足n个,则返回一个空流。与limit(n)互补。 中间操作:映射 map(Function f)---->效果如:list1.add(list2); 接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。 mapToLong(ToLongFunction f) 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的LongStream。 flatMap(Function f)---->效果如:list1.addAll(list2); 接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流。 中间操作:排序 sorted() 产生一个新流,其中按自然顺序排序(排序的元素要实现comparable接口)。 sorted(Comparator com) 产生一个新流,其中按比较器顺序排序。 终止操作:匹配与查找 allMatch(Predicate p) 检查是否匹配所有元素 anyMatch(Predicate p) 检查是否至少匹配一个元素 noneMatch(Predicate p) 检查是否没有匹配所有元素 findFirst() 返回第一个元素 findAny() 返回当前流中的任意元素 count() 返回流中元素总数 max(Comparator c) 返回流中最大值 min(Comparator c) 返回流中最小值 forEach(Consumer c) 内部迭代 终止操作:归约,通常和map连接使用map-reduce reduce(T iden, BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回T。 reduce(BinaryOperator b) 以将流中元素反复结合起来,得到一个值。返回Optional。 终止操作:收集 collect(Collector c) 将流转换为其他形式。接收一个Collector接口的实现。 Collector 接口中方法的实现决定了如何对流执行收集的操作(如收集到List、Set、Map)。 Collectors实用类提供了很多静态方法,可以方便地创建常见收集器实例。
Optional类: 创建Optional类对象的方法: Optional.of(T t) 创建一个Optional 实例,t必须非空; Optional.empty() 创建一个空的Optional 实例 Optional.ofNullable(T t) t可以为null 判断Optional容器中是否包含对象: boolean isPresent() : 判断是否包含对象。 void ifPresent(Consumer super T> consumer) :如果有值,就执行Consumer接口的 实现代码,并且该值会作为参数传给它。 获取Optional容器的对象: T orElse(T other) :如果有值则将其返回,否则返回指定的other对象。 T get(): 如果调用对象包含值,返回该值,否则抛异常。 T orElseGet(Supplier extends T> other) :如果有值则将其返回,否则返回由Supplier 接口实现提供的对象。 T orElseThrow(Supplier extends X> exceptionSupplier) :如果有值则将其返回,否则 抛出由Supplier接口实现提供的异常。



