Прямо сейчас я написал в компараторе, который сортирует массив целых чисел и строк.Как видно из кода, если два класса не совпадают, класс String принимает значение больше, чем значение.Однако это позволяет только два класса.Что, если я хочу добавить еще один примитивный тип в мой массив, например, Float?Я должен был бы добавить больше кода в оператор if-else.Есть ли способ реализовать сравнение без добавления оператора для каждого дополнительного класса, который я хочу сравнить?
import java.util.Arrays;
import java.util.Comparator;
public class SampleComparator implements Comparator<Object> {
public static void main(String[] args) {
Object[] inputData = { new String("pizza"), new Integer(0),
new String("apples"), new Integer(5), new String("pizza"),
new Integer(3), new Integer(7), new Integer(5) };
Arrays.sort(inputData, new SampleComparator());
System.out.println(Arrays.asList(inputData));
}
public int compare(Object o1, Object o2) {
if (o1.getClass().equals(o2.getClass())) {
return ((Comparable)o1).compareTo((Comparable)o2);
} else {
if(o1.getClass().getCanonicalName().equals("java.lang.String")){
return 1;
} else {
return -1;
}
}
}
}
output:
[0, 3, 5, 5, 7, apples, pizza, pizza]