при реализации интерфейса компаратора для достижения естественного упорядочения объектов:Различных типов сопоставимого
сказать, если бы мы имели класс счет:
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;
}
}
Если вы можете гарантировать, что 'balance()' всегда> = 0, то первый подход на самом деле прекрасен. Если вы не можете, вы можете выйти за пределы отрицательного диапазона 'int', и поэтому вам нужно использовать операторы сравнения, как во втором примере. – dlev
делает этот код даже скомпилировать ('int balance()', no semi-colons и т. Д.)? – Abubakkar
nah, я написал этот пример с верхней части головы, не программировал его. Просто пытаюсь понять, как это будет работать на моих собственных примерах. – joker