public static List merge(List[] xss, Comparator cmp) { int[] next = new int[xss.length]; for (int i=0; i < next.length; i++) { next[i] = 0; } List merged = null; int index = 0; while (true) { index = minIndex(xss, next, cmp); if (index == -1) { break;} merged.add(xss[index].get(next[index])); next[index]++; } return merged; }