Когда я выполняю код ниже, я получаю вывод как [0, -2000000000, 2000000000]
.Сортировка с компаратором и массивами.asList()
import java.util.Arrays;
import java.util.Comparator;
public class SordidSort {
public static void main(String args[]) {
Integer big = new Integer(2000000000);
Integer small = new Integer(-2000000000);
Integer zero = new Integer(0);
Integer[] arr = new Integer[] { big, small, zero };
Arrays.sort(arr, new Comparator<Object>() {
public int compare(Object o1, Object o2) {
return ((Integer) o2).intValue() - ((Integer) o1).intValue();
}
});
System.out.println(Arrays.asList(arr));
}
}
Как это отсортировано по номерам?
Точно так, как вы это указали, с твистом, что 'int' не может содержать значение' (-) 4000000000', поэтому вы получаете переполнение. Попробуйте использовать меньшие числа или 'long'. – Keppil
Возможный дубликат [Как правильно сравнить два целых числа в Java?] (Http://stackoverflow.com/questions/1514910/how-to-properly-compare-two-integers-in-java) – user902383