• 数值流


    
    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
        }
    }
    
  • 相关阅读:
    用折半查找法找出整型数组中指定元素所在的位置,并输出(折半查找法只能用于有序数列)。
    统计母字符串中含有子串的个数。
    //插入排序法对数组中的元素按从小到大进行排序
    求斐波那契(fibonacci)数列前20项的值 ,递归调用
    C++实现一句英文句子中的单词逆置
    C语言-黑白棋(人机对战)
    第九届蓝桥杯-明码
    四连块dfs
    八连块dfs
    求素数
  • 原文地址:https://www.cnblogs.com/fly-book/p/12651372.html
Copyright © 2020-2023  润新知