如何在数组列表中对异构元素进行排序?例如:
现在该如何对这个数组列表进行排序呢?
ArrayList l1 = new ArrayList();
l1.add(1);
l1.add("hi");
l1.add(1.0f);
现在该如何对这个数组列表进行排序呢?
定义可计算的排序规则。然后在实现了Comparator
接口的类中实现这些规则并使用。
Collections.sort(l1, myComparator); // myComparator is an instance of the class
// you just implemented
这取决于您想要如何排序它们。您可以将列表拆分为具有定义类型的新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, ...);
无论如何,那是我认为你会做的事情。