这两个片段来自 JDK 源代码:
public boolean remove(Object o) {
if (o == null) {
for (int index = 0; index < size; index++)
if (elementData[index] == null) {
fastRemove(index);
return true;
}
} else {
for (int index = 0; index < size; index++)
if (o.equals(elementData[index])) {
fastRemove(index);
return true;
}
}
return false; }
public boolean add(E e) {
ensureCapacityInternal(size + 1); // increments modCount
elementData[size++] = e;
return true;
}
命令-查询分离 (CQS) 指出,每个方法都应该是执行操作的命令或将数据返回给调用者的查询,但不能同时是两者。JDK 源代码中的这两个片段是否违反了 CQS 原则?