如何使用多种类型的Object对ArrayList进行排序

时间:2015-10-19 14:22:20

标签: java arraylist

我想创建一个包含多种类型Object的列表。所以我构建了这段代码:

List<Entrate>lista = modelManager.getEntrataManager().getEntrate();
List<NotaSpese>listaSpese=modelManager.getNotaSpesaManager().getNotaSpese();

List<Object> listaMovimenti = new ArrayList<Object>();
listaMovimenti.addAll(lista);
listaMovimenti.addAll(listaSpese);

现在我想通过Entrate和NotaSpese数据字段订购此集合。

如何订购清单?

3 个答案:

答案 0 :(得分:5)

使用自定义comparator

final class CustomComparator implements Comparator<Object> {
    @Override
    public int compare(Object o1, Object o2) {
        // implement some logic for comparing and return an int value here
    }
}

然后您只需使用方法Collections.sort

List<Object> listaMovimenti = ...
Collections.sort(listaMovimenti, new CustomComparator());

答案 1 :(得分:0)

嗯,首先,不建议使用带有混合类型的集合。

但在您的情况下,您应该为要在集合中使用的每种类型实现Comparable接口。或者,您可以创建一个在排序期间调用的Comparator来比较您的不同类型。

然后您可以使用Collections.sort

进行排序

答案 2 :(得分:0)

我个人认为EntrateNotaSpese可以相互比较,如果这是一般用法:

class Entrate implements Comparable<Entrate>, Comparable<NotaSpece> { 
     //Implementation with the comparers
}

class NotaSpese implements Comparable<Entrate>, Comparable<NotaSpece> { 
     //Implementation with the comparers   
}

然后调用Collections.sort(listaMovimenti)将使用适当的比较器。

希望我没有错过任何东西。