Это просто для того, чтобы исправить вашу реализацию метода сравнения,
Вместо вашего текущего метода,
@Override
public int compare(Integer o1, Integer o2) {
int len1 = o1.toString().length();
int len2 = o2.toString().length();
if (len1==len2) {
return o1.compareTo(o2);
} else {
return len1-len2;
}
}
Вы должны просто использовать метод сравнения класса Integer, например, так.Легко, безопасно и управляемо.
@Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o1, o2);
}
Таким образом, вы не сможете столкнуться с целочисленными переполнениями, если попытаетесь сделать что-то вроде len1-len2.Представьте, что в len1 уже есть наименьшее отрицательное целое число, и вы пытаетесь что-то еще вычесть из него?