第四章 类库

使用 summaryStatistics 方法统计曲目长度

public static void printTrackLengthStatistics(Album album) {

       IntSummaryStatistics trackLengthStats = album.getTracks()

                                                                      .mapToInt(track -> track.getLength())

                                                                      .summaryStatistics();

        System.out.println(trackLengthStats.toString());

}

结果:


IntSummaryStatistics

mapToInt 方法返回一个IntStream 对象,它包含一个summaryStatistics 方法,这个方法能计算出各种各样的统计值,如IntStream 对象内所有元素的最小值,最大值,平均值 以及数值总和。


4.3 重载解析

有两个重载方法可供选择:

private interface IntegerBiFunction extends BinaryOperator<Integer> {

}

// BinaryOperator 是一种特殊的BiFunction 类型,参数的类型和返回值类型相同。

private void overloadedMethod(BinaryOperator<Integer> lambda){

         System.out.println("BinaryOprator");

}

private void overloadedMethod(IntegerBiFunction lambda){

          System.out.println("IntegerBiFunction");

}

重载方法调用:

overloadedMethod((x,y) -> x+y);

Java 编译器推导出的lambda 表达式的类型是最具体的函数接口类型。因此此时输出的是:IntegerBiFunction 。

如果存在多个可能目标类型且最具体的类型不明确,则需要人为指定类型,否则会导致编译错误。


4.4 @FunctionInterface

    该注释会强制javac 检查一个接口是否符合函数接口的标准。


4.10 Optional

Optional 是为核心类库新设计的一个数据类型,用来替换null值。Optional 对象相当于值得容器,使用工厂方法of 可以从某个 值创建Optional 对象,使用get 方法可以提取该值。

Optional <String> a = Optional.of("a");

assertEquals("a",a.get());

Optional emptyOptional = Optional.empty();

Optional alsoEmpty = Optional.ofNullable(null);

orElse(String other) 方法给空的Optional 对象提供一个备选值。

如果计算备选值太过繁琐,可以使用orElseGet(Supplier<T> supplier) 方法,只用在Optional对象真正为空时才会调用。

assertEquals("b",emptyOptional.orElse("b"));

assertEquals("c" ,emptyOptional.orElseGet(() -> "c"));

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在代码中使用Lambda表达式 基本类型 流与数值流的转换流转换为数值流 当然如果是下面这样便会出错 数值流方法下...
    大唐雷恋阅读 1,895评论 0 0
  • 1.默认方法 1.1.接口中定义的包含方法体的方法,方法名有default关键字做前缀 1.1.1.在任何接口中,...
    躺柒阅读 1,040评论 0 1
  • 本文作者:杨龙,叩丁狼高级讲师。原创文章,转载请注明出处。 基类型和包装类型 拆箱装箱的性能问题 将基本类型转换为...
    叩丁狼教育阅读 3,723评论 0 0
  • Java流库(java.util.stream) 流提供了一种让我们可以在比集合更高的概念级别上指定计算的数据视图...
    thorhill阅读 10,302评论 0 4
  • Lambda在集合中的使用列表的遍历提起对于集合的遍历,恐怕下面的这种方式已经是一种思维定式了吧: final L...
    杀小贼阅读 4,170评论 0 0

友情链接更多精彩内容