Am trying to do a simple merge sort for a generic type T where T can be a string, integer but compiler seems to complain saying method merge in class MergeSortTask cannot be applied to given types
import java.util.* ;
import java.lang.* ;
import java.util.concurrent.*;
import java.lang.Comparable;
class MergeSortTask<T> extends RecursiveAction {
List<T> myList;
String typeList;
public MergeSortTask(String typeList) {
this.typeList = typeList;
}
@Override
public void compute() {
mergeSort(myList);
}
public List<T> mergeSort(List<T> list) {
if (list.size() == 1) {
return list;
} else {
int mid = list.size()/2;
List<T> left = mergeSort(list.subList(0,mid));
List<T> right = mergeSort(list.subList(mid,list.size()));
return merge(left, right);
}
}
private <T extends Comparable<T>> List<T> merge(List<T> left, List<T> right) {
List<T> newer = new ArrayList<>();
while (!left.isEmpty() && !right.isEmpty()) {
if (left.get(0).compareTo(right.get(0)) < 0) {
newer.add(left.get(0));
left.remove(0);
} else {
newer.add(right.get(0));
right.remove(0);
}
}
newer.addAll(left);
newer.addAll(right);
return newer;
}
}