当前位置: 代码迷 >> java >> 确保对象实现Comparable
  详细解决方案

确保对象实现Comparable

热度:34   发布时间:2023-08-04 09:25:30.0

我有一个小问题,并想知道如何解决它。 我有一个泛型类Tuple<A,B> ,现在我想根据A和B对它们的元组进行排序。它应该如下所示:

未排序:

(1,5)
(2,8)
(6,8)
(1,4)
(2,4)

排序方式:

(1,4)
(1,5)
(2,4)
(2,8)
(6,8)

出于这个原因,我想到在Tuple类中实现一个通用的比较方法( public int compareTo(Tuple<A, B> other) )。 唯一的问题是你可以为类参数化的所有对象(例如A = Integer,B = String)也必须实现compareTo方法,以便整个过程能够工作。

有没有办法确保元组可以容纳的所有对象实现Comparable接口?

或者有没有其他建议如何解决这个问题?

谢谢

如果您将该类声明为

public class Tuple<A extends Comparable<? super A>,
                   B extends Comparable<? super B>> { ...

然后确保A和B都具有自我可比性。 然后,您可以在类中具有的A或B类型的任何对象上调用compareTo()

您可以使用递归类型边界(参见第27项)来指定元组的组件扩展Comparable,如下所示:

 public class Tuple<A extends Comparable<? super A>, B extends Comparable<? super A>> implements Comparable<Tuple<A, B>> {
    A valueA;
    B valueB;

    @Override
    public int compareTo(Tuple<A, B> tuple) {
        // Implement comparison logic
        return 0;
    }
}

这允许您为元组的组件指定不同的类型(Tuple <Integer,String>)。

这应该可以解决问题。 您指定的任何类都必须扩展Comparable。

public class Tuple<? extends Comparable> {
}
  相关解决方案