199得票4回答
BigDecimal的equals()方法与compareTo()方法的区别

考虑下面这个简单的测试类:import java.math.BigDecimal; /** * @author The Elite Gentleman * */ public class Main { /** * @param args */ pu...

195得票18回答
如何简化一个空安全的compareTo()实现?

我正在为一个简单的类实现compareTo()方法(以便能够使用Java平台提供的Collections.sort()和其他好用的东西): public class Metadata implements Comparable<Metadata> { private St...

131得票21回答
compareTo()与equals()的区别

在Java中测试String的相等性时,我一直使用equals()方法,因为它似乎是最自然的方法。毕竟,它的名称已经说明了其意图。然而,我的一位同事告诉我,他被教导使用compareTo() == 0而不是equals()。这让我感到很不自然(因为compareTo()用于提供排序而不是比较相...

105得票5回答
为什么Java中Enum的compareTo方法是final的?

在Java中,枚举类型实现了Comparable接口。很遗憾无法覆盖Comparable的compareTo方法,因为它被标记为final。Enum的默认自然顺序是按枚举列表中的顺序排列。 有人知道为什么Java中的枚举类型有这个限制吗?

70得票8回答
使用原始类型的compareTo -> Integer / int

写代码时,是将多个if语句分别写在一起好呢,还是将它们合并成更长的if/else if语句好?int primitive1 = 3, primitive2 = 4; Integer a = new Integer(primitive1); Integer b = new Integer(pri...

40得票2回答
为什么Byte.compare()和Integer.compare()的实现方式不同?

我正在研究OpenJDK的源代码。 Byte.compare()和Integer.compare()这两个方法引起了我的注意:public static int Byte.compare(byte x, byte y) { return x-y; } public static i...

38得票4回答
比较方法违反了它的通用契约!仅适用于Java 7。

我知道这个问题已经存在一段时间了,查看了之前的所有答案,但仍然不能解决。 'crew'对象表示具有等级和其他项目的机组人员。比较应通过比较'int'值'assigned_rank'进行,如果两个实例中的该值相等,则应根据布尔值'is_trainer'进行区分。 在Java 7之前,这种方法非常...

31得票1回答
为什么要使用TimeSpan.CompareTo()而不是< >或=?

我一直在研究Kinect传感器的微软代码示例,偶然发现了以下这行代码。TimeSpan zeroDuration = TimeSpan.FromSeconds(0.0); TimeSpan timeRemaining = ...; if (timeRemaining.CompareTo(th...

30得票4回答
覆盖 CompareTo:如何处理 null 情况?

当给定对象为null时,在CompareTo方法中应返回什么? MSDN Library展示了一个例子,其中返回1。但是我原本预期会抛出错误,因为无法与null进行比较。 我对这个答案有不同的看法。什么是最佳实践?

29得票9回答
如何编写一个比较对象的compareTo方法?

我正在学习数组,我的一个数组包含一个姓氏,名字和分数。 我需要编写一个compareTo方法来比较姓氏和名字,以便可以按姓氏的字母顺序排序,如果两个人有相同的姓氏,则按名字排序。 我感到困惑,因为我书中的所有信息都是比较数字,而不是对象和字符串。 以下是我目前编写的代码。我知道它是错误的...