Сортировка разнородных элементов в массиве - PullRequest
3 голосов
/ 18 августа 2011

Как отсортировать разнородные элементы в массиве-списке? Например,

ArrayList l1 = new ArrayList(); 
l1.add(1); 
l1.add("hi"); 
l1.add(1.0f); 

Теперь, как отсортировать этот список массивов? ``

Ответы [ 3 ]

3 голосов
/ 18 августа 2011

Вы должны будете реализовать свой собственный Comparator, который сравнивает наименьшую верхнюю границу всех задействованных типов. В этом случае Object.

Похожие вопросы (со вчерашнего дня):

0 голосов
/ 18 августа 2011

Это зависит от того, как вы хотите их отсортировать. Вы могли бы разделить список на новые списки 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, ...);

Это то, что я думаю, вы все равно делаете.

0 голосов
/ 18 августа 2011

Определить вычислимо правила сортировки .Затем реализуйте эти правила в классе, который реализует Comparator и используйте

Collections.sort(l1, myComparator);  // myComparator is an instance of the class
                                     // you just implemented
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...