public V remove()

in src/main/java/org/apache/commons/collections4/map/Flat3Map.java [1059:1199]


    public V remove(final Object key) {
        if (delegateMap != null) {
            return delegateMap.remove(key);
        }
        if (size == 0) {
            return null;
        }
        if (key == null) {
            switch (size) {  // drop through
            case 3:
                if (key3 == null) {
                    final V old = value3;
                    hash3 = 0;
                    key3 = null;
                    value3 = null;
                    size = 2;
                    return old;
                }
                if (key2 == null) {
                    final V old = value2;
                    hash2 = hash3;
                    key2 = key3;
                    value2 = value3;
                    hash3 = 0;
                    key3 = null;
                    value3 = null;
                    size = 2;
                    return old;
                }
                if (key1 == null) {
                    final V old = value1;
                    hash1 = hash3;
                    key1 = key3;
                    value1 = value3;
                    hash3 = 0;
                    key3 = null;
                    value3 = null;
                    size = 2;
                    return old;
                }
                return null;
            case 2:
                if (key2 == null) {
                    final V old = value2;
                    hash2 = 0;
                    key2 = null;
                    value2 = null;
                    size = 1;
                    return old;
                }
                if (key1 == null) {
                    final V old = value1;
                    hash1 = hash2;
                    key1 = key2;
                    value1 = value2;
                    hash2 = 0;
                    key2 = null;
                    value2 = null;
                    size = 1;
                    return old;
                }
                return null;
            case 1:
                if (key1 == null) {
                    final V old = value1;
                    hash1 = 0;
                    key1 = null;
                    value1 = null;
                    size = 0;
                    return old;
                }
            }
        } else if (size > 0) {
            final int hashCode = key.hashCode();
            switch (size) {  // drop through
            case 3:
                if (hash3 == hashCode && key.equals(key3)) {
                    final V old = value3;
                    hash3 = 0;
                    key3 = null;
                    value3 = null;
                    size = 2;
                    return old;
                }
                if (hash2 == hashCode && key.equals(key2)) {
                    final V old = value2;
                    hash2 = hash3;
                    key2 = key3;
                    value2 = value3;
                    hash3 = 0;
                    key3 = null;
                    value3 = null;
                    size = 2;
                    return old;
                }
                if (hash1 == hashCode && key.equals(key1)) {
                    final V old = value1;
                    hash1 = hash3;
                    key1 = key3;
                    value1 = value3;
                    hash3 = 0;
                    key3 = null;
                    value3 = null;
                    size = 2;
                    return old;
                }
                return null;
            case 2:
                if (hash2 == hashCode && key.equals(key2)) {
                    final V old = value2;
                    hash2 = 0;
                    key2 = null;
                    value2 = null;
                    size = 1;
                    return old;
                }
                if (hash1 == hashCode && key.equals(key1)) {
                    final V old = value1;
                    hash1 = hash2;
                    key1 = key2;
                    value1 = value2;
                    hash2 = 0;
                    key2 = null;
                    value2 = null;
                    size = 1;
                    return old;
                }
                return null;
            case 1:
                if (hash1 == hashCode && key.equals(key1)) {
                    final V old = value1;
                    hash1 = 0;
                    key1 = null;
                    value1 = null;
                    size = 0;
                    return old;
                }
            }
        }
        return null;
    }