そう、
整数のリストを使用して、さまざまなソースからデータを取得する状況があります。その結果、2 つのリストを取得します。どちらもコンテンツと同じ POJO タイプを持ち、入力リストのすべての要素を正確に含んでいますが、順序は不明です。
私が必要とするのは、これらの POJO を最初のリストと同じ順序でソートすることです (この整数は、POJO の getter/setter を持つフィールドです)。したがって、整数リストとまったく同じ順序で POJO を含むリストを取得します。
したがって、私が考えている手順は次のとおりです。
- 2 つの POJO リストを 1 つに結合すると、少なくとも 2 つの同じサイズのリスト (Integer と POJO) があり、一致する要素が含まれていることがわかっています。
- 結果の POJO リストを並べ替えて、整数リストと一致させます。
ただし、ステップ2では、それを行うための良い(つまり、効率的できちんとした)方法を見つける必要があります...次のようなコンパレーターを作成することを考えています:
public class POJOComparable implements Comparator<MyPOJO>{
private List<Integer> values;
public POJOComparable(List<Integer> values) {
this.values = values;
}
@Override
public int compare(MyPOJO o1P, MyPOJO o2P) {
int o1 = values.indexOf(o1P.getId());
int o2 = values.indexOf(o2P.getId());
return (o1>o2 ? -1 : (o1==o2 ? 0 : 1));
}
}
さて、これはそのようなソートを行うための良いアプローチですか、それともそれを行うためのより良いまたはより効率的な方法はありますか? リストは約 20 アイテムになりますが、この並べ替えは頻繁に実行されるため、効率的な方法を探しています。