我有一个基类,其中包含以下行来对我的对象 ArrayList 进行排序:
Collections.sort(objects, SortObjectList);
它还包括以下类定义来定义排序:
private class SortObjectList implements Comparator<T>
{
public int compare(T lhs, T rhs)
{
return lhs.name.compareToIgnoreCase(rhs.name);
}
}
为了允许派生类使用不同的标准进行排序,我实现了以下内容:
Collections.sort(objects, getSortObjectClass());
和
public Comparator<T> getSortObjectClass() {
return new SortObjectList();
}
private class SortObjectList implements Comparator<T>
{
public int compare(T lhs, T rhs)
{
return lhs.name.compareToIgnoreCase(rhs.name);
}
}
然后我重写派生类中的排序,如下所示:
@Override
public Comparator<MyDataClass> getSortObjectClass() {
return new SortObjectList();
}
private class SortObjectList implements Comparator<MyDataClass>
{
public int compare(MyDataClasslhs, MyDataClassrhs)
{
return lhs.seqNo - rhs.seqNo;
}
}
哪个命令按 seqNo 而不是名称。
它有效,但似乎有点笨拙。有谁知道更优雅的解决方案?