【发布时间】:2015-07-08 10:09:57
【问题描述】:
我需要一种方法来获得 3 个值的中位数,我认为这是编写通用方法的好机会,因为我还没有真正实践过。我写了这个,它看起来很简单,虽然我收到一个警告,但根据我的测试,它似乎工作正常。
我知道我可以使用固有排序集或Collections.sort(),但这种方法是为了便于理解。
我想指出几点:
- 我注意到如果我尝试用
Arrays.asList(a, b, c)声明medianHelper这不起作用,为什么会这样?试图搜索这个会给我不相关的结果,否则它是难以捉摸的,因为我不确定发生了什么。我收到了一个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);
}
【问题讨论】:
-
你得到什么警告?
标签: java sorting generics median