不同类型的可比较物
当实现比较器接口来实现对象的自然排序时:
说如果我们有班级帐户:
class Account
{
Account(String name, int id)
int balance()
void deposit(int n)
}
我们希望按顺序对两个帐户的帐户余额进行排序
这两种方法有什么区别?
public class comparebalances implements Comparable <Account>
{
public int compare (Account acc1, Account acc2)
{
return acc1.balance()-acc2.balance();
}
}
public class comparebalances implements Comparable <Account>
{
public int compare (Account acc1, Account acc2)
{
if (acc1.balance()> acc2.balance())
return 1;
else if (acc1.balance()< acc2.balance())
return -1;
else if (acc1.balance()==acc2.balance())
return 0;
}
}
第二个更安全,因为第一个可以提供极端值的错误结果(整数溢出)。
正如Puce已经写到的那样,第二个更安全的地方是整数溢出会给你意想不到的输出。 如果你希望它同时简短和安全,你可以写:
return Integer.compare(acc1.balance(), acc2.balance());
链接地址: http://www.djcxy.com/p/91931.html