オブジェクト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 で注文します。
動作しますが、少しぎこちないようです。よりエレガントなソリューションを知っている人はいますか?