2

私は愚かな学生です。タイトルの質問があります。私がこれを行うとき、ブール値を返すかどうかは私に影響を与えないと思います:

List<String> lst = new ArrayList<String>();
lst.add("whatever");
lst.remove("whatever");

API の Arraylist クラスの remove メソッド (Collection< E > インターフェイスからオーバーライドする) は次のとおりです。

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;
}

Collection< E > インターフェースでは、フレームワークの設計者が書くのpublic void remove(Object o);は問題ないと思いますが、特定の目的が必要であり、理解できません。何のためにブール値を返しますか? 教えてください

4

3 に答える 3

1

場合によっては、削除するオブジェクトがコレクションの一部であるかどうかをクライアント コードが認識できないことがあります。このクライアント コードは、削除操作の効果を確実に知りたいと考えています。したがって、ブール値を返すという設計上の決定。

-- 編集 たとえば、同期コレクションが 2 つのスレッド間で共有されているとします。1 つはデータを取り込み、もう 1 つはそこからオブジェクトを削除します。削除スレッドは、削除が成功したかどうかを知りたがっています。

于 2013-06-16T11:09:06.007 に答える