Java 在我的课堂上比较两个泛型的更好选择。
我需要帮助,伙计们。 在这个类“TreeBag”中,有没有更好的版本来比较两个泛型 我目前的解决方案是:Java 在我的课堂上比较两个泛型的更好选择。,java,class,generics,Java,Class,Generics,我需要帮助,伙计们。 在这个类“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.p
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;
}
公共类树型结构实现包、比较器{
.
.
.
@凌驾
公共整数比较(tO1,tO2){
int temp=Integer.parseInt(o1.toString())-Integer.parseInt(o2.toString());
如果(温度<0)
返回-1;
否则,如果(温度>0)
返回1;
其他的
返回0;
}
这是我目前的解决方案。但我做的事情是一个非常难看的解决方案。
这个问题有没有更好的解决办法
谢谢您的
树形图不应该试图成为比较器,它应该有一个比较器:
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 {
}
}
}
公共类树型包{
私人最终比较仪为了进行适当的比较,比较仪必须知道应该比较什么
改进设计的几种方法:
使用
并使用o1。与(o2)
使用
并在compare
方法中为YourDomainObject
编写特定的逻辑
将TreeBag
抽象并在compare
具体类的方法中为YourDomainObject
编写特定逻辑:MyTreeBag扩展TreeBag{…
为树状图提供比较器
等等
是什么让你认为一个任意的T
toString
会返回一些可以解析为int
的东西?你想用什么来比较?如果你比较int
你可以做返回整数。比较(Integer.parseInt(…),Integer.parseInt(…);
你的类型没有得到正确的约束。