我需要一個方法來獲得3個值的中位數,我認爲這是一個很好的機會寫一個通用的方法,因爲我真的沒有這種做法。我寫了這篇文章,看起來非常直截了當,雖然我得到了一個警告,但根據我的測試,它似乎工作正常。通用方法來找到3個值的中位數
我知道我可以使用固有排序集或Collections.sort()
,但這種方法是爲了理解。
我想找出幾件事情:
- 我注意到這不,如果我想聲明
medianHelper
與Arrays.asList(a, b, c)
這是爲什麼工作?試圖搜索這個結果給了我無關的結果,因爲我不確定發生了什麼,所以它是難以捉摸的。我得到一個UnsupportedOperationException
,但這不是我下面的方式。 - 爲什麼我會收到警告?什麼是錯的/失蹤?
的方法如下:
private static <T extends Comparable> T median(T a, T b, T c) {
List<T> medianHelper = new ArrayList<>();
T max;
T min;
medianHelper.add(a);
medianHelper.add(b);
medianHelper.add(c);
if (a.compareTo(b) >= 0) {
max = a;
min = b;
} else {
max = b;
min = a;
}
if (max.compareTo(c) == -1) {
max = c;
}
if (min.compareTo(c) >= 0) {
min = c;
}
medianHelper.remove(max);
medianHelper.remove(min);
return medianHelper.get(0);
}
你會得到什麼警告? – benzonico