如何分析;在java CollectionUtils.class addAll方法中更改了|=collection.add(iterator.next()”?
当我阅读java源代码时,CollectionUtils中的addAll()方法很难理解,需要帮助。谢谢如何分析;在java CollectionUtils.class addAll方法中更改了|=collection.add(iterator.next()”?,java,Java,当我阅读java源代码时,CollectionUtils中的addAll()方法很难理解,需要帮助。谢谢 public static <C> boolean addAll(Collection<C> collection, Iterator<? extends C> iterator) { boolean changed; for(changed = false; iterator.hasNext(); changed |= collectio
public static <C> boolean addAll(Collection<C> collection, Iterator<? extends C> iterator) {
boolean changed;
for(changed = false; iterator.hasNext(); changed |= collection.add(iterator.next())) {
;
}
return changed;
}
publicstaticbooleanaddall(Collection-Collection,Iterator这个循环将迭代器中的所有元素添加到集合中,但也跟踪集合是否发生了更改
collection.add(iterator.next())
如果项目已实际添加,则返回true
对于changed |=collection.add(iterator.next())
部分,这是一个布尔运算,是一个OR运算
true | true
产生true
true | false
也会产生true
这意味着一旦changed
获得值true
,循环后它仍然是true
这是addAll
返回的信息,集合是否因此发生了更改(即,是否有任何迭代更改了集合)