blob: d0b07a910743a91a9991ec045962435af0d9366c [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package java.util;
/**
* A {@code Set} is a data structure which does not allow duplicate elements.
*
* @since 1.2
*/
public interface Set<E> extends Collection<E> {
/**
* Adds the specified object to this set. The set is not modified if it
* already contains the object.
*
* @param object
* the object to add.
* @return {@code true} if this set is modified, {@code false} otherwise.
* @throws UnsupportedOperationException
* when adding to this set is not supported.
* @throws ClassCastException
* when the class of the object is inappropriate for this set.
* @throws IllegalArgumentException
* when the object cannot be added to this set.
*/
public boolean add(E object);
/**
* Adds the objects in the specified collection which do not exist yet in
* this set.
*
* @param collection
* the collection of objects.
* @return {@code true} if this set is modified, {@code false} otherwise.
* @throws UnsupportedOperationException
* when adding to this set is not supported.
* @throws ClassCastException
* when the class of an object is inappropriate for this set.
* @throws IllegalArgumentException
* when an object cannot be added to this set.
*/
public boolean addAll(Collection<? extends E> collection);
/**
* Removes all elements from this set, leaving it empty.
*
* @throws UnsupportedOperationException
* when removing from this set is not supported.
* @see #isEmpty
* @see #size
*/
public void clear();
/**
* Searches this set for the specified object.
*
* @param object
* the object to search for.
* @return {@code true} if object is an element of this set, {@code false}
* otherwise.
*/
public boolean contains(Object object);
/**
* Searches this set for all objects in the specified collection.
*
* @param collection
* the collection of objects.
* @return {@code true} if all objects in the specified collection are
* elements of this set, {@code false} otherwise.
*/
public boolean containsAll(Collection<?> collection);
/**
* Compares the specified object to this set, and returns true if they
* represent the <em>same</em> object using a class specific comparison.
* Equality for a set means that both sets have the same size and the same
* elements.
*
* @param object
* the object to compare with this object.
* @return boolean {@code true} if the object is the same as this object,
* and {@code false} if it is different from this object.
* @see #hashCode
*/
public boolean equals(Object object);
/**
* Returns the hash code for this set. Two set which are equal must return
* the same value.
*
* @return the hash code of this set.
*
* @see #equals
*/
public int hashCode();
/**
* Returns true if this set has no elements.
*
* @return {@code true} if this set has no elements, {@code false}
* otherwise.
* @see #size
*/
public boolean isEmpty();
/**
* Returns an iterator on the elements of this set. The elements are
* unordered.
*
* @return an iterator on the elements of this set.
* @see Iterator
*/
public Iterator<E> iterator();
/**
* Removes the specified object from this set.
*
* @param object
* the object to remove.
* @return {@code true} if this set was modified, {@code false} otherwise.
* @throws UnsupportedOperationException
* when removing from this set is not supported.
*/
public boolean remove(Object object);
/**
* Removes all objects in the specified collection from this set.
*
* @param collection
* the collection of objects to remove.
* @return {@code true} if this set was modified, {@code false} otherwise.
* @throws UnsupportedOperationException
* when removing from this set is not supported.
*/
public boolean removeAll(Collection<?> collection);
/**
* Removes all objects from this set that are not contained in the specified
* collection.
*
* @param collection
* the collection of objects to retain.
* @return {@code true} if this set was modified, {@code false} otherwise.
* @throws UnsupportedOperationException
* when removing from this set is not supported.
*/
public boolean retainAll(Collection<?> collection);
/**
* Returns the number of elements in this set.
*
* @return the number of elements in this set.
*/
public int size();
/**
* Returns an array containing all elements contained in this set.
*
* @return an array of the elements from this set.
*/
public Object[] toArray();
/**
* Returns an array containing all elements contained in this set. If the
* specified array is large enough to hold the elements, the specified array
* is used, otherwise an array of the same type is created. If the specified
* array is used and is larger than this set, the array element following
* the collection elements is set to null.
*
* @param array
* the array.
* @return an array of the elements from this set.
* @throws ArrayStoreException
* when the type of an element in this set cannot be stored in
* the type of the specified array.
* @see Collection#toArray(Object[])
*/
public <T> T[] toArray(T[] array);
}