在arraylist中排序异构元素

时间:2011-08-18 06:44:01

标签: java sorting arraylist

如何对数组列表中的异构元素进行排序?例如,

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

现在如何对这个数组列表进行排序?``

3 个答案:

答案 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, ...);

无论如何,这就是我认为你做的。