我想创建一个包含多种类型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数据字段订购此集合。
如何订购清单?
答案 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)
我个人认为Entrate
和NotaSpese
可以相互比较,如果这是一般用法:
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)
将使用适当的比较器。
希望我没有错过任何东西。