for (Iterator it = al.iterator(); it.hasNext(); )
{
if(!newAl.contains(it.next())) //这里的it.next()是取得下一个元素并返回元素值,内部指针向后移动一位
newAl.add(it.next()); //而这里add的就是it的再下一个值了,因为上一个值被用来判断了.所以每循环一次少一个
}
解决方法:定义成一个变量,然后调用该变量的引用,如下
for (Iterator it = al.iterator(); it.hasNext(); )
{ Object obj = it.next();
if(!newAl.contains(obj))
newAl.add(obj);
} |