異なるオブジェクト タイプの 4 つのリストがあります。各オブジェクト タイプは、getTime() という共通の要素を共有します。
ノート:
- リストは順番に並べられていますが、同じポイントから開始されない場合があります。
- リストは同じ時点で開始されない場合があります。
各要素「i」が getTime() に対して同じ値を持つように、これら 4 つのオブジェクトを順序付ける最良の方法は何ですか?
同じ要素でgetTime()
リストを相互参照して、同じ時間を持つ要素に一致させることを意味する場合...
2 つのメソッドを持つラッパー クラスを作成しgetTime()
、getValue()
public class TimeElement{
final long time;
final Object value;
TimeElement(long time, Object value){
this.time = time;
this.value = value;
}
public long getTime(){return time;}
public Object getValue(){return value;}
}
次に、各リストの内容を追加して、1 つの大きなリストを作成します。
List<TimeElement> list = new ArrayList<TimeElement>();
for(int i=0;i<list1.size();i++){
list.add(new TimeElement(list1.get(i).getTime(), list1.get(i));
}
次に、この結合されたリストを並べ替えます。それを繰り返すと、同じ時間の値を持つ要素を簡単に取得できます。
必要に応じて、最初のリストを時間で並べ替えることができます。次に、他の 3 つのリストについては、最初のリストを単純に反復処理し、同時に他のリストでオブジェクトを見つけることができます。
for (Object1 o : list1) {
for(Object2 o2 : list2) {
if ((o2.getTime()).equals(o.getTime())) {
newList2.add(o2);
break;
}
}
for(Object3 o3 : list3) {
if ((o3.getTime()).equals(o.getTime())) {
newList3.add(o3);
break;
}
}
for(Object4 o4 : list4) {
if ((o4.getTime()).equals(o.getTime())) {
newList2.add(o4);
break;
}
}
}