这里compareTo的用法是什么,Object o是不是固定写法,为什么-1就代表传入的参数比我本身小,o就排在类本身前面?而为什么this.id-p.id大,我排在你后面,还有diff为0时return diff有什么用
根号申 发表于2017-10-20 09:30
这个方法是用来比较两个对象的大小的,是Comparable接口的实现方法,想要深入了解可以查询这个接口的API文档。
Object o是方法参数,Object是所有类的父类,也就是说这个方法可以传入任何类型的参数。o是参数名,想写什么就写什么。
为什么返回值是小于0、等于0、大于0表示对象的比较结果,这是Comparable接口定义的规则。
diff为0时,说明两个对象相等。
申老师您好,我实在搞不懂这段代码是怎么执行的,您能不能按照视频中的这几个例子,讲解一下这段代码的执行过程。
-1表示传入的参数比本类对象值小,或者说传入的参数比本类对象位置靠前(也就是说传入的对象不继承自person就排在本类前面)
如果参数是person类对象,就让两者的id相减,谁的id大谁排在后面,谁的id小谁排在前面,id一样就返回0.
老师您好 发表于2017-10-20 18:17
申老师您好,我实在搞不懂这段代码是怎么执行的,您能不能按照视频中的这几个例子,讲解一下这段代码的执行过程。
-1表示传入的参数比本类对象值小,或者说传入的参数比本类对象位置靠前(也就是说传入的对象不继承自person就排在本类前面)
如果参数是person类对象,就让两者的id相减,谁的id大谁排在后面,谁的id小谁排在前面,id一样就返回0.
这个是方法是由TreeSet自动执行的。当你向TreeSet添加元素的时候,TreeSet会调用参数对象的compareTo()方法,于集合中的元素挨个对比,从而找到新元素存放的位置。你只要指定要compareTo()中的比对规则就可以了。