Я написал эту версию Merge Sort (это часть, где я объединяю части), но у нее есть проблема. Я хотел бы использовать его с обобщениями, поэтому я создал массив Object, чтобы помочь мне во время процесса. Когда я компилирую, он выдает предупреждение, которое я подавил этой строкой в верхней части кода. Есть ли способ избежать использования массива Object? (Метод сравнения из другого класса, но он работает так же, как и CompareTo):
@SuppressWarnings("unchecked")
public static <T> void merge(ArrayList<T> array, Comparator<T> c, int p, int mid, int q) {
Object[] tmp = new Object[q-p+1];
int i = p;
int j = mid+1;
int k = 0;
while (i <= mid && j <= q) {
if (c.compare(array.get(i), array.get(j))<0)
tmp[k] = array.get(i++);
else
tmp[k] = array.get(j++);
k++;
}
if (i <= mid && j > q) {
while (i <= mid)
tmp[k++] = array.get(i++);
} else {
while (j <= q)
tmp[k++] = array.get(j++);
}
for (k = 0; k < tmp.length; k++)
array.set(k+p, (T)tmp[k]);
}