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("流操作:将此流中的所有元素组合成一条字符串返回:\t" + str);

        DoubleSummaryStatistics summary = Stream.of(12, 10, 54, 8, 132, 589, 4)
                .collect(Collectors.summarizingDouble(Integer::intValue));
        System.out.println("流操作:最大值:" + summary.getMax() + "\t最小值:" + summary.getMin() + "\t平均值:" + summary.getAverage()
                + "\t总和:" + summary.getSum() + "\t元素的个数:" + 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

猜你喜欢

转载自www.cnblogs.com/li-yan-long/p/10339143.html