OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Blame | Last modification | View Log | RSS feed

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 * 
 * Copyright 2011-2019 OpenConcerto, by ILM Informatique. All rights reserved.
 * 
 * The contents of this file are subject to the terms of the GNU General Public License Version 3
 * only ("GPL"). You may not use this file except in compliance with the License. You can obtain a
 * copy of the License at http://www.gnu.org/licenses/gpl-3.0.html See the License for the specific
 * language governing permissions and limitations under the License.
 * 
 * When distributing the software, include this License Header Notice in each file.
 */
 
 package org.openconcerto.utils.cc;

import java.util.ArrayList;
import java.util.Collection;

/**
 * This class implements the <tt>Set</tt> interface with a list, using reference-equality in place
 * of object-equality when comparing items.
 * 
 * @param <E> the type of elements maintained by this set
 */
public final class ArrayIdentitySet<E> extends ListIdentitySet<E> implements Cloneable {

    public ArrayIdentitySet() {
        super();
    }

    public ArrayIdentitySet(int expectedMaxSize) {
        super(expectedMaxSize);
    }

    public ArrayIdentitySet(Collection<? extends E> c) {
        super(c);
    }

    @Override
    protected ArrayList<E> newList(int expectedSize) {
        return new ArrayList<>(expectedSize);
    }

    /**
     * Returns a shallow copy of this instance: the elements themselves are not cloned.
     * 
     * @return a shallow copy of this set
     */
    @Override
    public Object clone() {
        return new ArrayIdentitySet<E>(this);
    }
}