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());
}
}
我试图找出常见的元素,我的原始列表正在改变。我的意思是当我打印列表时,只有最后一个元素被更改。 任何建议。
答案 0 :(得分:1)
resultList
被分配到集合lists
中的第一个元素,位于顶部。
在第4行,您针对retainAll
执行resultList
而不更改分配给resultList
的内容 - 它仍然指向lists
中的第一个对象。
您可以考虑创建一个新的List<Left>
对象,以便在开始时检查公共元素,而不是如何声明resultList
:
List<Left> resultList = new List<Left>();
resultList.addAll ((List<Left>) lists.iterator().next());
...
然后,当您打印元素时,您将希望在最终循环中使用resultList。
请注意,您仍然认为lists
至少有一个元素 - 如果它是空的,您将获得例外。