繁体   English   中英

如何获得二维 Arraylist 的中位数

[英]How to get the median of a 2d Arraylist

我试图获得具有 110 个元素的ArrayList的中位数。 每 5 个元素是一个节点,我想要节点的中位数。 我已经尝试过这段代码,但它抛出了一个超出范围的错误。 有什么建议么?

for(int i = 0; i < list.size(); i++)
{
    double Median = 0;
    for(int j = 0; j < list.size(); j++)
    {
        Median = ((list[i-1][j]/2) + (list[i-1][j]/2)-1)/2;
    }
    System.out.println(Median);
}

谢谢!!

这是我的做法:

static List<Double> findMediansOf(List<Double> nodes) {
    List<Double> medians = new ArrayList<>();

    // preventing out of bounds
    if (nodes.isEmpty()) {
        return medians;
    }

    for (int i = 0; i < nodes.size(); i += 5) {
        List<Double> unsortedNode = nodes.subList(i, i + 5);

        // sorting `unsortedNode`
        List<Double> node = unsortedNode.stream()
            .sorted()
            .collect(Collectors.toList());

        // node has always a size of 5, no need to average in case of an even element count
        medians.add(node.get(2));
    }

    return medians;
}

现在如果你想打印结果,你只需要:

findMediansOf(nodes).forEach(System.out::println);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM