在ArrayList中对异构元素进行排序

3
如何在数组列表中对异构元素进行排序?例如:
ArrayList l1 = new ArrayList(); 
l1.add(1); 
l1.add("hi"); 
l1.add(1.0f); 

现在该如何对这个数组列表进行排序呢?
3个回答

2
您需要实现自己的“比较器”,该比较器将比较所有涉及类型的最小上限。在本例中,上限为“Object”。
相关问题(来自昨天):

0

定义可计算的排序规则。然后在实现了Comparator接口的类中实现这些规则并使用。

Collections.sort(l1, myComparator);  // myComparator is an instance of the class
                                     // you just implemented

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

无论如何,那是我认为你会做的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接