java—在列表的相同位置查找每个列表项的平均值< list< double>>

csbfibhn  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(307)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

16天前关门了。
改进这个问题
嗨,我想找到一个双倍列表的lisf的平均值,并返回双倍列表,这是原始列表的平均值,我如何在java流中做到这一点?

List<Double> comupteAverage(List<List<Double>> values)
{
    List<Double> averages=?;
    return averages;
}

返回的每个列表项是原始列表中相同位置的每个列表项的平均值。我希望我能正确地描述这个问题。谢谢。

xtupzzrd

xtupzzrd1#

我想所有的名单都一样大。你可以用 IntStream() 遍历每个列表的同一索引上的值并求和。
第一次迭代 IntStream.range(0, l1.size()) 从列表的第一个项遍历到最后一个项。
第二次迭代 IntStream.range(0, values.size()) 是到达同一索引上的所有项: l1.get(0), l2.get(0),... 为了得到总数 l1.get(0) + l2.get(0) +... : IntStream.range(0, values.size()).mapToDouble(j -> values.get(j).get(i)).sum() 除以 values.size() 得到平均值。
试试这个:

List<Double> l1 = Arrays.asList(2.0, 10.0, 7.0);
List<Double> l2 = Arrays.asList(7.0, 15.0, 7.0);
List<Double> l3 = Arrays.asList(3.0, 5.0, 7.0);
List<List<Double>> values = Arrays.asList(l1, l2, l3);

List<Double> avgList = IntStream.range(0, l1.size()).boxed()
        .map(i -> IntStream.range(0, values.size()).mapToDouble(j -> values.get(j).get(i)).sum()
                / Double.valueOf(values.size()))
        .collect(Collectors.toList());
System.out.println(avgList);

输出:

[4.0, 10.0, 7.0]

相关问题