Это зависит от того, как вы хотите их отсортировать. Вы могли бы разделить список на новые списки ArrayLists с определенным типом, отсортировать каждый из них, а затем объединить их?
Что-то вроде: (псевдокод)
ArrayList<Integer> intList = new ArrayList<Integer>();
ArrayList<Integer> stringList = new ArrayList<Integer>();
// ...etc
for (Object o : list) {
if (o.getClass().equals(Integer.TYPE))
intList.add(o);
else if (o.getClass().equals(String.class))
stringList.add(o);
// ...etc
}
sort(intList);
sort(stringList);
// ...etc
concatenate(intList, stringList, ...);
Это то, что я думаю, вы все равно делаете.