如何对数组列表中的异构元素进行排序?例如,
ArrayList l1 = new ArrayList();
l1.add(1);
l1.add("hi");
l1.add(1.0f);
现在如何对这个数组列表进行排序?``
答案 0 :(得分:3)
您必须实现自己的Comparator
,它会比较所有相关类型的最小上限。在这种情况下,Object
。
相关问题(来自昨天):
答案 1 :(得分:0)
定义可计算的排序规则。然后在实现Comparator
并使用
Collections.sort(l1, myComparator); // myComparator is an instance of the class
// you just implemented
答案 2 :(得分:0)
这取决于您希望它们如何排序。您可以将列表拆分为具有已定义类型的新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, ...);
无论如何,这就是我认为你做的。