2012-04-25 8 views
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()); 
     } 
    } 

私は元のリストを変更しようとしています。リストを印刷すると最後の要素のみが変更されます。 提案があります。retainAllは最後の要素を変更します

+1

例を入力してください。 – Crazenezz

+0

可能であれば、より関連性の高いコードを入力してください。いくつかの疑問が生じます。 mLeftとは何ですか?リストは "左のタイプのリスト"のようです。しかし、コードとロジックはあいまいです。もっとコードを投稿してください。 – whitehat

答えて

1

​​は、コレクションの最初の要素listsの右上に割り当てられます。 4行目で

あなたは​​が割り当てられているものを変更することなく、​​に対するretainAllを実行する - それはまだlistsの最初のオブジェクトを指しています。

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

あなたは、最終的なループでresultListを使用したいと思う:あなたは右の代わりにあなたが​​を宣言した方法の開始時に、共通の要素をチェックするために、新しいList<Left>オブジェクトを作成することを検討可能性がある

あなたが要素を印刷するとき。

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

関連する問題