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
Post a Comment