当前位置: 首页 > 知识库问答 >
问题:

CircularFifoBuffer. avg()计算失败

薛经纶
2023-03-14

我有下面的伪代码,它在一个hasmap中将一系列的双精度码保存到一个特定的键,我希望能够使用这个缓冲区来计算每个键的平均值。

    final int bufferSize = 5;

    HashMap<Integer, List<Double>> testmap = new HashMap<Integer, List<Double>>();

    List<Double> Values1 = Arrays.asList(1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9);
    List<Double> Values2 = Arrays.asList(22.2,33.3,44.4,55.5,66.6,77.7,88.8,99.9);
    List<Double> Values3 = Arrays.asList(333.3,444.4,555.5,666.6);

    testmap.put(123456, Values1);
    testmap.put(234567, Values2);
    testmap.put(345678, Values3);

    HashMap<Integer, CircularFifoBuffer> buffer = new HashMap<Integer, CircularFifoBuffer>();

    for (Map.Entry<Integer, List<Double>> entry: testmap.entrySet()) {
        Integer key = entry.getKey();
        List<Double> value = entry.getValue();
        CircularFifoBuffer bufferEntries = new CircularFifoBuffer(4);

        for(Double val : value){
            bufferEntries.add(val);
        }

        buffer.put(key, bufferEntries);
    }

我现在想计算一个简单的平均值

buffer.get(345678).stream().mapToDouble(d -> d).average().orElse(0.0)

它返回“不兼容类型:lambda表达式中的错误返回类型,无法转换为Double。我尝试了不使用maptoDOuble的方法,但没有得到avg()方法。有人知道为什么这样做不起作用吗

共有1个答案

洪知
2023-03-14

CircularFifoBuffer不是泛型,它使用固定的对象类型:

public boolean add(Object element)

然后,必须指定确切的源类型,因为对象可以是任何类型。如果你写信

buffer.get(345678).stream().mapToDouble(d -> (Double) d).average().orElse(0.0)
                                              ^^^^^^

您的代码编译并生成预期的输出

499.95000000000005

很好的阅读可能是Java泛型的基础知识。

 类似资料:
  • 问题内容: 如果我有一个如下所示的SQL表,该如何计算当前的赢或输连胜(以及按季节对赢/输连胜进行分组/重置)。我想更新表并为每条记录填写条纹。 因此,对于#1,条纹将为“ -1”,#2将为“ 1”,#3将为“ 2”,但是一旦我们降至#7,它将再次重置为“ 1”。(+1表示“赢得1场比赛”,-1表示“失去1场比赛”,依此类推。) 问题答案: 对于每个游戏,计算与之前结果相同的游戏,这样就不会有中间

  • 我试图将util模块对象传递给puppeteer,但没有成功。我知道这个问题是在如何将所需的模块对象传递给puppeteer page.evaluate中提出的,但提供的解决方案在我的情况下不起作用。MWE: 显示错误: UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):错误:计算失败:ReferenceError:未定义util 谢谢 在初始行中

  • 这很可能是一个寻找问题的解决方案。。。如果是这样,我请求你的原谅 可能的实施: 这样的解释是:如果计算成功,就让它失败;如果计算失败,就让它成功。我不确定,但这似乎有点像MonadPlus的反面。。。如果你眯起眼睛真的很难??? 这个概念有没有标准的typeclass或其他实现?如果有的话,底层的数学是什么样的(例如,这是一个半群、一个循环等)?

  • 我是gRPC的新手,正在尝试使用cactuaroid中的聊天服务器/客户端示例来学习它。我修改了代码,以显示WPF应用程序中长时间运行的任务的进度。所有代码都在.NET5上运行,我使用的是最新版本的gRPC软件包。 使用计算机的IP地址时,该过程工作正常,但是当为gRPC客户端使用计算机名称时,我收到“DNS解析失败”异常(计算机名称为“skylake”): RpcException: Statu

  • 我尝试了Eclipse-Clean的建议,然后清理了工作区并重新加载了最新的eclipse Mars eclipse创建了一个新的工作区,但得到了与我使用旧工作区相同的错误,当我运行64/32位windows系统时一切都很好。重新构建的windows计算机只有32位现在当我启动Eclipse时,我的日志文件将得到以下内容:

  • 我有这个模式 列表表 [{“movie_id”:100,“gene1”:“犯罪”,“计数”:1,“id”:100},{“movie_id”:141267,“gene1”:“犯罪”,“计数”:1,“id”:141267},{“movie_id”:207932,“gene1”:“犯罪”,“计数”:1,“id”:207932},{“movie_id”:238636,“gene1”:“惊悚”,“计数”:1