请帮我解释一下这两种不同写法的区别在哪里?arg1.getName().compareTo(arg0.getName()); 问题看下面:第一种是下面这样:...public int compare(Person arg0,Person arg1)\x05{\x05\x05int result = arg0.getName().compareTo(arg1.

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 03:32:27

请帮我解释一下这两种不同写法的区别在哪里?arg1.getName().compareTo(arg0.getName()); 问题看下面:第一种是下面这样:...public int compare(Person arg0,Person arg1)\x05{\x05\x05int result = arg0.getName().compareTo(arg1.
请帮我解释一下这两种不同写法的区别在哪里?arg1.getName().compareTo(arg0.getName()); 问题看下面:
第一种是下面这样:.
.
.
public int compare(Person arg0,Person arg1)
\x05{
\x05\x05int result = arg0.getName().compareTo(arg1.getName());
\x05\x05if (result == 0)
\x05\x05{
\x05\x05\x05return arg0.getID() - arg1.getID();
\x05\x05}
\x05\x05return result;
\x05}
.
.
.
第二种是这样:
.
.
.
public int compare(Person arg0,Person arg1)
\x05{
\x05\x05int result = arg1.getName().compareTo(arg0.getName());
\x05\x05if (result == 0)
\x05\x05{
\x05\x05\x05return arg0.getID() - arg1.getID();
\x05\x05}
\x05\x05return result;
\x05}
.
.
.
这两种有什么区别?不同样是比较两个相同的吗?特别是比较那里,搞不明白变了顺序之后为什么结果就不同!

请帮我解释一下这两种不同写法的区别在哪里?arg1.getName().compareTo(arg0.getName()); 问题看下面:第一种是下面这样:...public int compare(Person arg0,Person arg1)\x05{\x05\x05int result = arg0.getName().compareTo(arg1.
这问题我关注了好几天了.我也想知道答案,好像确实没有人知道啊.我觉得这取决于.compareTo这个函数是怎么写的,可能的区别也就是.compareTo对于arg1和arg0对象采取的不同的操作,再比较两者的值.
比如说,如果x.getName().compareTo(y)函数,在比较x和y之前,对x判断是否为负数,如果是负数,那就直接把result赋1,如果不是,再比较两者的大小.
这样一来,如果arg0<0,arg1>0,那么,arg0.compareTo(arg1)=1,因为arg0<0.但反过来,arg1.compareTo(arg0)=0,因为arg1>0,而且arg1!=arg0.
当然,这里只是举了个简单的例子,实例中的getName()的返回值应该是一个字符串,实际的compareTo对于x的预操作,也应该更复杂.仅供参考~有问题随时追问哈.