Рассмотрим следующий массив:Как отсортировать массив, содержащий как символы, так и целые числа?
{5,"k",2,"d",3,"e"}
Как отсортировать массив такой, что символы и целые числа, каждый сгруппированы вместе и отсортированный:
{"d","e","k",2,3,5}
Рассмотрим следующий массив:Как отсортировать массив, содержащий как символы, так и целые числа?
{5,"k",2,"d",3,"e"}
Как отсортировать массив такой, что символы и целые числа, каждый сгруппированы вместе и отсортированный:
{"d","e","k",2,3,5}
Вы можете сортировать массив, позвонив по одному из sort()
методы на Arrays
.
В вашем случае вы должны позвонить по телефону 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]
Спасибо, я получаю правильный выход. Раньше я также реализовал Компаратор, но не сравнивал имена классов. – shirish
Внесите свой собственный «Компаратор» и вызовите 'Arrays.sort (arr, myComparator)'. – Andreas
Вы должны указать код своих попыток, чтобы мы могли помочь вам улучшить их. –
Как вы объявили массив? Массивы обычно не могут содержать mutliple типы данных, если вы не насильно взломали их. «Код», который вы показываете, недействителен Java, и ваш вопрос неясен. Просьба уточнить. –