-3

1,2,2,3 を含む最初の list_session があります。2 番目の list_time には 30,17,25,46 が含まれます。 3 番目の要素と 4 番目などについても同じです。コードが機能しません。なんで ?コードを変更するにはどうすればよいですか?

while (it8.hasNext()) {
        tempTime = it8.next();
        tempSession = it7.next();

        if (testSession.equals(tempSession)) {
            testSession = tempSession;
            time.add(tempTime);
        } else {
            time.add(value);
            testSession = tempSession;
        }
    }
    for (int j = 0; j < time.size(); j++) {
        System.out.println(time.get(j) + " time");
    }
4

2 に答える 2

1

まず、アソシエーションがある場合は、Javaのアソシエーションリストを使用する必要があります。

次に、キーがセッションIDと時間の値リストであるマップを作成します

第三に、マップを調べて、値リストで2つ以上の値をチェックし、必要な条件を設定します。

PSアソシエーションリストの代わりに2つのリストを使用しないでください。多くの間違いを犯します。

于 2012-12-04T18:01:36.740 に答える
1

ArrayList APIごと:

「このクラスの iterator および listIterator メソッドによって返される反復子はフェイルファストです。反復子の作成後に、反復子自体の remove または add メソッド以外の方法でリストが構造的に変更された場合、反復子は ConcurrentModificationException をスローします。 . したがって、同時変更に直面した場合、反復子は、将来の不確定な時点で恣意的で非決定論的な動作を危険にさらすのではなく、迅速かつ明確に失敗します。」

it8 がリスト「time」の反復子である場合、それがおそらく原因です。時間に値を直接追加しているため、イテレータ it8 が古くなっています。この方法で値を追加する必要がある場合は、代わりに反復子の add メソッドを使用する必要があります。おそらくより良い方法は、結果を完全に別のリストに収集することです。

于 2012-12-04T18:45:07.487 に答える