public static <T extends Comparable<T>> int compare(List<T> a, List<T> b) { if (a == b) { return 0; } else if (a == null) { return -1; } else if (b == null) { return 1; } int size = a.size(); int answer = size - b.size(); if (answer == 0) { for (int i = 0; i < size; i++) { answer = compare(a.get(i), b.get(i)); if (answer != 0) { break; } } } return answer; }