Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何分析;在java CollectionUtils.class addAll方法中更改了|=collection.add(iterator.next()”?_Java - Fatal编程技术网

如何分析;在java CollectionUtils.class addAll方法中更改了|=collection.add(iterator.next()”?

如何分析;在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

当我阅读java源代码时,CollectionUtils中的addAll()方法很难理解,需要帮助。谢谢

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
返回的信息,集合是否因此发生了更改(即,是否有任何迭代更改了集合)