0
List<Left> resultList = lists.iterator().next();
    for (Iterator iterator = lists.iterator(); iterator.hasNext();) {
        List<Left> list = (List<Left>) iterator.next();         
        resultList.retainAll(list);
    }

    /*for (Left left : resultList) {
         System.out.println(left.getData());
    }*/

    for (Left left : mLeft) {           
        ArrayList<Left> mTempList = left.getArray();    
        for (Iterator iterator = mTempList.iterator(); iterator.hasNext();) {
            Left left2 = (Left) iterator.next();
            System.out.println(left2.getData());
        }
    }

共通の要素を見つけようとしていますが、元のリストが変更されています。つまり、リストを印刷すると、最後の要素のみが変更されます。助言がありますか。

4

1 に答える 1

1

resultListコレクションの一番上にある最初の要素に割り当てられますlists

4 行目では、割り当てられているものを変更せずにretainAllに対して実行します。これは、まだ最初のオブジェクトを指しています。resultListresultListlists

List<Left>宣言した方法の代わりに、最初に共通要素をチェックするために新しいオブジェクトを作成することを検討するかもしれませんresultList:

List<Left> resultList = new List<Left>();
resultList.addAll ((List<Left>) lists.iterator().next());
...

要素を出力するときに、最終ループで resultList を使用する必要があります。

lists少なくとも 1 つの要素があると想定していることに注意してください。空の場合は例外が発生します。

于 2012-04-25T04:45:15.460 に答える