【发布时间】:2015-02-13 10:31:16
【问题描述】:
在方法中拆分逻辑的最佳实践是什么,谁将使用 Comparable 元素,或者在创建时提供特定的 Comparator,具体取决于使用的类的构造函数? 示例:
public class MinMax<E> {
private final Comparator<? super E> comparator;
private final boolean isSpecificComparatorProvided;
public MinMax() {
this.comparator = null;
this.isSpecificComparatorProvided = false;
........;
}
public MinMax(Comparator<? super E> comparator) {
this.comparator = comparator;
this.isSpecificComparatorProvided = true;
........;
}
private boolean isBigOrEqual(E e1, E e2) {
if (isSpecificComparatorProvided) {
Comparator<? super E> cpr = comparator;
int cmpr = cpr.compare(e1, e2);
return cmpr > -1;
} else {
@SuppressWarnings("unchecked")
Comparable<? super E> e1Comparable = (Comparable<? super E>) e1;
int cmprTo = e1Comparable.compareTo(e2);
return cmprTo > -1;
}
}
}
我是否总是检查方法 isBigOrEqual() 中的特定比较器? 当没有提供特定的 Comparator 时,是否还需要对 Comparable 进行强制转换? 还有其他方法吗?
【问题讨论】:
标签: java collections comparator comparable