zoukankan      html  css  js  c++  java
  • java中Optional和Stream流的部分操作

    package test9;
    
    import java.util.DoubleSummaryStatistics;
    import java.util.Optional;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
    
    public class StreamTest {
        public static void main(String[] args) {
            Optional<Integer> optional = Optional.of(123);
    
            System.out.println("创建一个Optional对象的方式一:" + optional.get());
    
            Optional<Integer> optional2 = Optional.ofNullable(null);
            System.out.println("Optional操作:对象是否为空:" + !optional2.isPresent());
    
            Optional<Double> result = Optional.of(4.0).flatMap(StreamTest::squareRoot).flatMap(StreamTest::inverse);
            System.out.println("Optional操作:flatMap可以循环调用其中的方法,4.0的平方根处以2是:" + result.get());
    
            String str = Stream.of("一", "二", "三", "四", "五", "六").collect(Collectors.joining(","));// joining参数可为空,即结果中将没有","
            System.out.println("流操作:将此流中的所有元素组合成一条字符串返回:	" + str);
    
            DoubleSummaryStatistics summary = Stream.of(12, 10, 54, 8, 132, 589, 4)
                    .collect(Collectors.summarizingDouble(Integer::intValue));
            System.out.println("流操作:最大值:" + summary.getMax() + "	最小值:" + summary.getMin() + "	平均值:" + summary.getAverage()
                    + "	总和:" + summary.getSum() + "	元素的个数:" + summary.getCount());
        }
    
        // 计算平方根
        private static Optional<Double> squareRoot(Double x) {
            return x < 0 ? Optional.empty() : Optional.of(Math.sqrt(x));
        }
    
        private static Optional<Double> inverse(Double x) {
            return x == 0 ? Optional.empty() : Optional.of(x / 2);
        }
        
        
    }

    打印结果:

    创建一个Optional对象的方式一:123


    Optional操作:对象是否为空:true


    Optional操作:flatMap可以循环调用其中的方法,4.0的平方根处以2是:1.0


    流操作:将此流中的所有元素组合成一条字符串返回: 一,二,三,四,五,六


    流操作:最大值:589.0 最小值:4.0 平均值:115.57142857142857 总和:809.0 元素的个数:7

  • 相关阅读:
    IIC/I2C从地址之7位,8位和10位详解
    ARM uxtw
    ARM(CM3)的汇编指令
    WZR/XZR ARM
    LDR r, label 和 LDR r, =label的区别
    Distinguishing between 32-bit and 64-bit A64 instructions
    03JavaScript程序设计修炼之道_2019-06-18_20-39-14_事件onload&onmouseover&out
    02-CSS基础与进阶-day6_2018-09-05-20-18-21
    02-CSS基础与进阶-day5_2018-09-03-22-10-39
    02-CSS基础与进阶-day5_2018-09-03-21-41-57
  • 原文地址:https://www.cnblogs.com/li-yan-long/p/10339143.html
Copyright © 2011-2022 走看看