我需要帮助。 有没有更好的版本来比较“TreeBag”类中的两个泛型?
我当前的解决方案是这样做的:
public class TreeBag<T> implements Bag<T>, Comparator<T> {
.
.
.
@Override
public int compare(T o1, T o2) {
int temp = Integer.parseInt(o1.toString()) - Integer.parseInt(o2.toString());
if (temp < 0)
return -1;
else if (temp > 0)
return 1;
else
return 0;
}
这是我当前的解决方案。但我做的事情是一个非常难看的解决方案。 有没有更好的办法解决这个问题?
谢谢
最佳答案
您的TreeBag
不应该试图成为一个比较器,它应该有一个比较器:
public class TreeBag<T> implements Bag<T> {
private final Comparator<? super T> comparator;
public TreeBag(Comparator<? super T> comparator) {
this.comparator = Objects.requireNonNull(comparator, "comparator");
}
/// and somewhere
void somewhere() {
T o1 = ....;
T o2 = ....;
int rc = comparator.compare(o1, o2);
if (rc < 0) {
} else if (rc > 0) {
} else {
}
}
}
一个TreeBag<String>
例如,将使用 new TreeBag<String>(String.CASE_INSENSITIVE_ORDER);
创建.
一个TreeBag<Integer>
然后将使用 new TreeBag<Integer>(Comparator.naturalOrder());
创建.
关于java - 比较我类的两个泛型的更好选择。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46779153/