28得票4回答
java.lang.Comparable and equals

如果我为一个类实现了 java.lang.Comparable 接口,我是否仍然需要重写 equals() 方法?或者说 Comparable 也可以用于判断相等吗? 如果答案是 否 ,那么如果出现一些差异怎么办?比如说我在 equals() 方法中将两个对象称为相等的方式与我在 Compa...

27得票4回答
使用泛型类实现Comparable接口

我想定义一个实现通用Comparable接口的类。而在我的类中,我还定义了一个泛型元素T。为了实现该接口,我将比较委托给了T。以下是我的代码: public class Item<T extends Comparable<T>> implements Comparab...

26得票6回答
使用Collections.sort(object)比较Long值

我正在尝试按照long类型对一个简单对象列表进行排序,但以下代码不起作用,因为其中一个较小的数字会被推到列表顶部。因此,我要寻找一种直接按照实际long数值排序的方法。 当前对象的实现大致如下。在使用此类时,我调用Collections.sort(trees);public class Tr...

26得票5回答
如何在Java中使用Comparable CompareTo处理字符串?

我可以使用它按员工ID排序,但我不确定是否可以比较字符串。 我收到了一个错误,指出字符串没有定义运算符。public int compareTo(Emp i) { if (this.getName() == ((Emp ) i).getName()) ...

26得票3回答
Java中的“unchecked call to compareTo(T) as a member of the raw type java.lang.Comparable”意为“作为原始类型java.lang.Comparable的成员,对compareTo(T)的未检查调用”。

我试图在Java中实现一个排序列表作为简单的练习。为了使其通用化,我有一个add(Comparable obj),这样我就可以使用任何实现了Comparable接口的类。 但是,在代码中的任何地方使用obj.compareTo(...)时,编译器都会给出"unchecked call to ...

25得票5回答
为什么compareTo返回一个整数

最近我在SO聊天室看到了一个讨论,但没有得出明确的结论,所以我最终在那里提问。 这是出于历史原因还是为了与其他语言保持一致性呢?当查看各种语言的compareTo签名时,它返回一个int。 为什么它不返回枚举类型呢?例如在C#中,我们可以这样做: enum CompareResult {...

24得票3回答
Collections.sort()声明:为什么要使用<? super T>而不是<T>?

为什么 Collections.sort(List&lt;T&gt;) 的签名是这样的: public static &lt;T extends Comparable&lt;? super T&gt;&gt; void sort(List&lt;T&gt; list) 而不是: pu...

24得票4回答
在Java中使用"<"或">"运算符比较两个对象

如何使用“&lt;”或“&gt;”使Java中的两个对象可比较 例如: MyObject&lt;String&gt; obj1= new MyObject&lt;String&gt;(“blablabla”, 25); MyObject&lt;String&gt; obj2= new MyO...

24得票2回答
Java: 在使用一个装满自定义对象的ArrayList时,我应该重写equals方法还是实现Comparable/Comparator接口来使用contains方法?

我有一个ArrayList,里面装着这些:class TransitionState { Position positionA; Position positionB; int counter; public boolean equals (Object ...

23得票6回答
为什么如果compareTo()返回0就暗示着对象相等?

让我们创建一个名为Person的类。人有姓名和身高。 equals()和hashCode()方法只考虑姓名。Person是可比较的(或者我们为其实现了比较器,不管哪种方式),按照身高进行比较。 很可能会出现两个不同人的身高相同的情况,但例如TreeSet的行为是compareTo()==0表示...