我是Java的新手并且正在努力学习。
Java没有运算符重载,所以在编写一个值对象时,我知道你需要用一个重写的'equals'方法而不是==运算符来比较对象,但我还没有读过你的其他方法需要覆盖。其他常见运算符的等效方法如何:>,<,> =和< =。是否需要覆盖这些方法,或者如果需要,我必须创建它们。如果我必须创建这些方法,必须有一些标准的命名约定('gt','lt','gte','lte')。它是什么?
答案 0 :(得分:5)
查看Comparable
界面。
答案 1 :(得分:2)
您需要覆盖hashCode()
(由所有哈希集合使用)和equals()
。如果a.equals(b)
,则a.hashCode()
应该等于b.hashCode()
,这是一条规则。
对于比较,您可以实现接口Comparable
。对于此界面,您需要实现compareTo
方法,该方法相当于<,=,> (请注意a.compareTo(b) == 0
并不暗示或要求a.equals(b)
!)。实施Comparable
是可选的,仅在您对排序或某些基于订单的集合感兴趣时才有用,例如TreeSet
。
答案 2 :(得分:0)
在java中,Comparable接口完全是为了这个。对于“规范示例”,请查看java.lang.Integer
类,并查看equals()
,hashCode()
和compareTo()
的实现。另外,请查看java.lang.Object
和java.lang.Comparable
中可用于这些方法的JavaDoc信息。