考虑以下数组:
{5,"k",2,"d",3,"e"}
如何对数组进行排序,使字符和整数分别组合在一起并进行排序:
{"d","e","k",2,3,5}
答案 0 :(得分:1)
您可以通过调用Arrays
上的sort()
方法之一对数组进行排序。
在您的情况下,您要拨打sort(T[] a, Comparator<? super T> c)
。
由于您的数组是Object[]
,这意味着您需要实施Comparator<Object>
。
这是一个示例实现,可以根据需要对您的示例值进行排序:
public final class MixedComparator implements Comparator<Object> {
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public int compare(Object obj1, Object obj2) {
Class<?> class1 = obj1.getClass();
Class<?> class2 = obj2.getClass();
// Sort values of same type according to their natural order
if (class1 == class2)
return ((Comparable)obj1).compareTo(obj2);
// Sort values of different type by class name,
// in descending order, so `String` sorts before `Integer`
return class2.getName().compareTo(class1.getName());
}
}
然后你就这样使用它:
Object[] arr = { 5, "k", 2, "d", 3, "e" };
Arrays.sort(arr, new MixedComparator());
System.out.println(Arrays.toString(arr));
输出:
[d, e, k, 2, 3, 5]