-2

異なるオブジェクト タイプの 4 つのリストがあります。各オブジェクト タイプは、getTime() という共通の要素を共有します。

ノート:

  1. リストは順番に並べられていますが、同じポイントから開始されない場合があります。
  2. リストは同じ時点で開始されない場合があります。

各要素「i」が getTime() に対して同じ値を持つように、これら 4 つのオブジェクトを順序付ける最良の方法は何ですか?

4

2 に答える 2

0

同じ要素で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));
}

次に、この結合されたリストを並べ替えます。それを繰り返すと、同じ時間の値を持つ要素を簡単に取得できます。

于 2013-08-05T18:04:26.627 に答える
-1

必要に応じて、最初のリストを時間で並べ替えることができます。次に、他の 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;
        }
    }
}
于 2013-08-05T17:57:01.610 に答える