从arraylist获取中位数长度

时间:2017-03-07 21:10:58

标签: java android arraylist median

我对Java很新,我想得到一个计算,但它一直出现错误。我试图将单词的中位长度添加到arraylist中。我找到了使用数组执行此操作的代码,但我似乎无法找到使用arraylist执行此操作的解决方案。

这是我的代码: (通过文本字段添加单个字符串单词)

ArrayList<String> stringList = new ArrayList<>();

double wordLength;
double average;
double middle;
String medianNum;

@Override
protected void onCreate(Bundle savedInstanceState) {...

    middle = 0;

    for (String word2 : stringList) {
        wordLength = stringList.length();
        middle = wordLength / 2;
    }

    if (middle % 2 == 1){
        medianNum = String.format("%.2f", middle);
    } else {
        medianNum =  String.format("%.2f", ((middle-1) + middle)/2.0);
    }

    // Add/Update the average number to the textview
    medianLength.setText(medianNum);


}

1 个答案:

答案 0 :(得分:2)

首先,根据字符串长度对数组进行排序。可以通过将Comarator传递给sort函数来实现,如下所示:

Collections.sort(stringList, new Comparator<String>() {
    @Override
    public int compare(String s1, String s2)
    {
        return  s1.length() - s2.length();
    }
});

然后,按如下方式进入中间位置:

if (stringList.size() % 2 == 1) {
    middle = stringList.get(stringList.size()/2).length();
} else {
    middle = (stringList.get(stringList.size()/2).length()
           + stringList.get(stringList.size()/2-1).length()) / 2.0;
}