Java 在我的课堂上比较两个泛型的更好选择。

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

我需要帮助,伙计们。 在这个类“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;
    }
公共类树型结构实现包、比较器{
.
.
.
@凌驾
公共整数比较(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(…);
    你的类型没有得到正确的约束。