zoukankan      html  css  js  c++  java
  • 数值流

    
    import java.util.Arrays;
    import java.util.List;
    import java.util.OptionalInt;
    import java.util.stream.IntStream;
    import java.util.stream.Stream;
    
    
    /**
     * 数值流
     */
    public class MapDemo3 {
        public static void main(String[] args){
            List<Apple> appleList = Arrays.asList(new Apple("red",12),new Apple("yellow",15),new Apple("green",10),new Apple("red",10));
            //映射到数值流
            //IntStream还支持其他的方便方法,如max、min、average等。
            int sumWeight = appleList.stream()
                    .mapToInt(Apple::getWeight)
                    .sum();
            System.out.println(sumWeight);
            //原始流转换成一般流
            IntStream intStream = appleList.stream()
                    .mapToInt(Apple::getWeight);//将 Stream 转 换为数值流
            Stream<Integer> boxed = intStream.boxed();//将数值流转 换为Stream
            //默认值OptionalInt
            OptionalInt optionalInt = appleList.stream()
                    .mapToInt(Apple::getWeight)
                    .max();
            int max = optionalInt.orElse(-1);
            System.out.println(max);//如果没有最大值的话,显式提供一个默认最大值
    
            //数值范围
            //Java 8引入了两个可以用于IntStream和LongStream的静态方法,帮助生成这种范围: range和rangeClosed。这两个方法都是第一个参数接受起始值,第二个参数接受结束值。但 range是不包含结束值的,而rangeClosed则包含结束值
            IntStream intStream1 = IntStream.rangeClosed(1, 100)
                    .filter(n -> n % 2 == 0);
            System.out.println(intStream1.count());//从1到100 偶数个数
    
    
        }
    }
    
    
    import java.util.stream.IntStream;
    import java.util.stream.Stream;
    
    /**
     * 勾股数
     */
    public class MapDemo4 {
        public static void main(String[] args) {
            Stream<double[]> pythagoreanTriples = IntStream.rangeClosed(1, 100)//从rangeClosed返回的IntStream生成一个IntStream
                    .boxed()//生成Stream<Integer>
                    .flatMap(a ->  //flatMap把所有生成的三元数流扁平化成一个流
                            IntStream.rangeClosed(a, 100)
                                    .mapToObj(b -> new double[]{a, b, Math.sqrt(a * a + b * b)})//返回一个对象值流
                                    .filter(t -> t[2] % 1 == 0));//元组中的第三个元素必须是整数
    
            pythagoreanTriples.limit(5) //明确限定从生成的流 中要返回多少组勾股数
                    .forEach(t->System.out.println(t[0] + ", " + t[1] + ", " + t[2]));
    
            //3.0, 4.0, 5.0
            //5.0, 12.0, 13.0
            //6.0, 8.0, 10.0
            //7.0, 24.0, 25.0
            //8.0, 15.0, 17.0
        }
    }
    
  • 相关阅读:
    Vue.js 2.x笔记:安装与起步(1)
    EntityFramework Core笔记:保存数据(4)
    EntityFramework Core笔记:查询数据(3)
    EntityFramework Core笔记:表结构及数据基本操作(2)
    EntityFramework Core笔记:入门(1)
    ASP.NET MVC系列:web.config中ConnectionString aspnet_iis加密与AppSettings独立文件
    EntityFramework优化:第一次启动优化
    EntityFramework优化:查询性能
    EntityFramework优化:查询WITH(NOLOCK)
    SpringCloud学习笔记:熔断器Hystrix(5)
  • 原文地址:https://www.cnblogs.com/fly-book/p/12651372.html
Copyright © 2011-2022 走看看