Arraylist数据结构

时间:2016-04-19 17:26:48

标签: java database

本周我正在研究数据结构和cvs文件。我理解如何读取cvs文件,我对文件中的列做了平均值,但我不能做中位数和模式。我的代码只显示了特定的列。我想做中位数和模式。谁能帮助我如何从我想要的列中获得中位数和模式?

"CalforniaSchool.cvs"

school name      students     teachers

C.H.S             1203         45

D.H.S             1023         67

E.H.S             902          34

A.H.S             1280         89
ArrayList<String>medianmode=Files.readAllLines(Paths.get("CalforniaSchool.file"));

String []final=medianmode.split(",");


double close = Double.parseDouble(final[2]);//i want to do median and mode for column 2

1 个答案:

答案 0 :(得分:0)

apache常用数学库中有几个函数,你在这里: mean

还有一些实现:

平均:

public static int median(int[] m) {
    int middle = m.length/2;
    if (m.length%2 == 1) {
        return m[middle];
    } else {
        return (m[middle-1] + m[middle]) / 2.0;
    }
}

模式:

public static List<Integer> mode(final int[] a) {
    final List<Integer> modes = new ArrayList<Integer>();
    final Map<Integer, Integer> countMap = new HashMap<Integer, Integer>();

    int max = -1;

    for (final int n : numbers) {
        int count = 0;

        if (countMap.containsKey(n)) {
            count = countMap.get(n) + 1;
        } else {
            count = 1;
        }

        countMap.put(n, count);

        if (count > max) {
            max = count;
        }
    }

    for (final Map.Entry<Integer, Integer> tuple : countMap.entrySet()) {
        if (tuple.getValue() == max) {
            modes.add(tuple.getKey());
        }
    }

    return modes;
}

如果你正在使用python,它会比带有pandas的java更容易。如果你还想坚持java,我强烈建议你自己逐行实现它们。

最佳。