美文网首页bigdata
3. java8 实现求平均数(wordMean)

3. java8 实现求平均数(wordMean)

作者: 百炼 | 来源:发表于2018-12-19 17:46 被阅读0次

date[2018-12-19]

前期准备

1.IntStream 上的操作只能产生原始整数: IntStreammap 操作接受的Lambda必须接受int并返回 int(一个IntUnaryOperator )。但是你可能想要生成另一类值,比如 Dish 。为此,你需要访问 Stream接口中定义的那些更广义的操作。要把原始流转换成一般流(每个 int都会装箱成一个Integer ),可以使用 boxed方法
2.Stream API提供了两个静态方法来从函数生成流: Stream.iterateStream.generate
这两个操作可以创建所谓的无限流:不像从固定集合创建的流那样有固定大小的流。由 iterate
generate 产生的流会用给定的函数按需创建值,因此可以无穷无尽地计算下去!一般来说,
应该使用 limit(n)来对这种流加以限制,以避免打印无穷多个值。

        IntStream intStream = IntStream.iterate(0, n -> n + 2).limit(10);
        Stream<Integer> boxed = IntStream.iterate(0, n -> n + 2).limit(10).boxed();
        
        DoubleStream generate = DoubleStream.generate(Math::random);
        Stream<Double> generateBox = Stream.generate(Math::random);

使用java8的方式求平均数

package action.mapreduce;

import org.junit.Test;
import java.util.stream.IntStream;
import java.util.stream.Stream;

class BoxPair {
    Integer data;
    Integer count;

    public BoxPair(Integer data, Integer count) {
        this.data = data;
        this.count = count;
    }
}
public class WordMean {
    /**
     * 使用new的方式构造BoxPair
     */
    @Test
    public void testWordMean1() {
        Stream<Integer> boxed = IntStream.iterate(0, n -> n + 2).limit(10).boxed();
        BoxPair reduce = boxed
                .map(val -> {
                    return new BoxPair(val, 1);
                }).reduce(new BoxPair(0, 0), (p, n) -> {
                    return new BoxPair(p.data + n.data, p.count + n.count);
                });

        System.out.println("Pair: data[" + reduce.data + "],count[" + reduce.count + "]");
    }

    /**
     * 使用Lambda表达式的形成构造BoxPair
     */
    @Test
    public void testWordMean2() {
        Stream<Integer> boxed = IntStream.iterate(0, n -> n + 2).limit(10).boxed();
        BoxPair reduce = boxed
                .map((v) -> new BoxPair(v, 1))
                .reduce(new BoxPair(0, 0), (p, n) ->
                        new BoxPair(p.data + n.data, p.count + n.count));

        System.out.println("Pair: data[" + reduce.data + "],count[" + reduce.count + "]");
    }
}

相关文章

  • 3. java8 实现求平均数(wordMean)

    date[2018-12-19] 前期准备 1.IntStream 上的操作只能产生原始整数: IntStream...

  • pandas 基础入门: 向量化方法

    求某列数据的平均数(mean) 此处需要用到numpy求test列的平均数: numpy.mean(test)求t...

  • 单链表递归求平均数

    设计一个算法:实现用递归求单链表的平均数 实现思路 通过递归循环累加,要注意用double类型,避免在递归过程中用...

  • JS实现求平均数的功能

    需求:去掉一个最大值,去掉一个最小值,求剩余数的平均数 Array.prototype.pingjunzhi = ...

  • 求平均数

    题目:求给定一组数的平均数,要求去掉一个最大值,去掉一个最小值,再求平均值。 类数组转化为数组:把argument...

  • MySql(六)分组函数

    AVG () 求平均数 SUM () 求和 COUNT () 计数 MAX () 求最大值 MIN () 最小值 ...

  • 平均数教学案例 2022-03-06

    平均数 教学内容:“平均数”北师大版小学数学四年级(下)第六单元 教学目标:1.经历探究求平均数的过程,体会平均数...

  • 【Q】Data Analysis

    1. 标准差:反正是我自己那个公式 2. 已知频数求中位数&平均数 3. 数据组距为0:看relative fre...

  • 10.13

    输出 输出小数 求正方形面积 求正方形面积2 求三个数的平均数

  • 作业17-10-13

    输出 输出小数 求正方形面积 求正方形面积2 求三个数的平均数

网友评论

    本文标题:3. java8 实现求平均数(wordMean)

    本文链接:https://www.haomeiwen.com/subject/ktajkqtx.html