java - Sorting with Comparator and Arrays.asList() -


when execute below code, getting output [0, -2000000000, 2000000000].

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 0 = new integer(0);     integer[] arr = new integer[] { big, small, 0 };     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));     } } 

how sorted numbers?

instead of

public int compare(object o1, object o2) {     return ((integer) o2).intvalue() - ((integer) o1).intvalue(); } 

use following

public int compare(object o1, object o2) {     int x1 = ((integer) o1).intvalue();     int x2 = ((integer) o2).intvalue();     if (x1 < x2) {         return -1;     } else if (x1 == x2) {         return 0;     } else {         return 1;     } } 

your code can generate overflow. when overflow generated can obtain strange order.


Comments