2012-04-25 92 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 2012-04-25 04:31:19

+0

如果可能的话给出更多相关的代码。问题出现了。什么是mLeft?名单似乎“型左的名单列表”。但仍然代码和逻辑是模糊的。请发布更多代码。 – whitehat 2012-04-25 04:40:22

回答

1

​​得到正确的顶部分配给第一要素您的收藏lists英寸

第4行中,你执行retainAll对​​不改变什么​​被分配到 - 它仍然指着lists的第一个对象。

你可能会考虑创建一个新的List<Left>对象来检查常见的元素,在一开始,而不是你如何申报​​:

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

你会再想要在决赛中循环使用resultList当你打印出来的元素。

请注意,您仍然假设lists至少有一个元素 - 如果它是空的,你会得到一个异常。