我需要使用比较器对对象列表进行排序,我需要嵌套类型排序
首先按第一个属性排序,然后按第二个排序,依此类推......
我尝试了类似的事情。
dinerlist = repository.Retrieve();
ComparatorChain chain = new ComparatorChain();
chain.addComparator(new TagEntry.SortByUsertype());
chain.addComparator(new TagEntry.SortByCompany());
chain.addComparator(new TagEntry.SortByUsername());
Collections.sort(dinerlist, chain);
size = dinerlist.size();
我在这里遇到的问题是比较链的noclassdefifound虽然我已经在我的代码中导入了包
还有其他比较对象的方法
答案 0 :(得分:1)
你可以用Java制作它(没有Android库)。我现在可以想到两个选择
有两种方法可以比较对象
可比较的界面
public class Foo implements Comparable<Foo> {
public int compareTo(Foo foo) {
// compare them
}
}
自定义比较器 - 您可以将其传递给Collections.sort
public class CustomComparator implements Comparator<Foo> {
public int compare(Foo foo1, Foo foo2) {
// compare them
}
}
我建议创建更多自定义比较器并使用类似(它只是一个原始代码)方法来处理它们
public int compare(Object o1, Object o2) throws UnsupportedOperationException {
BitSet orderingBits = new BitSet();
// get iterator for a List of comparators
Iterator comparators = comparatorList.iterator();
for (int comparatorIndex = 0; comparators.hasNext(); ++comparatorIndex) {
Comparator comparator = (Comparator) comparators.next();
int retval = comparator.compare(o1,o2);
if (retval != 0) {
// invert the order if it is a reverse sort
if (orderingBits.get(comparatorIndex) == true) {
retval *= -1;
}
return retval;
}
}
// if comparators are exhausted, return 0
return 0;
}