不太懂java代码中这一行什么意思

java源码中的List的删除list中集合中所有元素的方法

public boolean removeAll(Collection<?> c) {
        Objects.requireNonNull(c);
        return batchRemove(c, false);
    }

private boolean batchRemove(Collection<?> c, boolean complement) {
        final Object[] elementData = this.elementData;
        int r = 0, w = 0;
        boolean modified = false;
        try {
            for (; r < size; r++)
                if (c.contains(elementData[r]) == complement)
                    elementData[w++] = elementData[r]; // 不太明白这句话什么意思?
        }

把不需要删除的数据往前移 最后删除后面的数据

意思就是在elementData[]数组中挑选出符合c.contains(elementData[r]) == complement条件的,因为w必定是小于等于r,不管满不满足条件,r总是递增的,w只能在满足条件的情况下递增。