1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.util; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * A {@code Set} is a data structure which does not allow duplicate elements. 23f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 24f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @since 1.2 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic interface Set<E> extends Collection<E> { 27f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Adds the specified object to this set. The set is not modified if it 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * already contains the object. 31f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object to add. 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if this set is modified, {@code false} otherwise. 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws UnsupportedOperationException 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * when adding to this set is not supported. 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws ClassCastException 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * when the class of the object is inappropriate for this set. 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IllegalArgumentException 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * when the object cannot be added to this set. 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean add(E object); 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Adds the objects in the specified collection which do not exist yet in 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this set. 47f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param collection 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the collection of objects. 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if this set is modified, {@code false} otherwise. 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws UnsupportedOperationException 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * when adding to this set is not supported. 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws ClassCastException 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * when the class of an object is inappropriate for this set. 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws IllegalArgumentException 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * when an object cannot be added to this set. 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean addAll(Collection<? extends E> collection); 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Removes all elements from this set, leaving it empty. 62f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws UnsupportedOperationException 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * when removing from this set is not supported. 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #isEmpty 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #size 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void clear(); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Searches this set for the specified object. 72f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object to search for. 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if object is an element of this set, {@code false} 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * otherwise. 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean contains(Object object); 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Searches this set for all objects in the specified collection. 82f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param collection 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the collection of objects. 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if all objects in the specified collection are 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * elements of this set, {@code false} otherwise. 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean containsAll(Collection<?> collection); 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Compares the specified object to this set, and returns true if they 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * represent the <em>same</em> object using a class specific comparison. 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Equality for a set means that both sets have the same size and the same 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * elements. 95f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object to compare with this object. 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return boolean {@code true} if the object is the same as this object, 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * and {@code false} if it is different from this object. 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #hashCode 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean equals(Object object); 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the hash code for this set. Two set which are equal must return 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the same value. 107f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the hash code of this set. 109f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #equals 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int hashCode(); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns true if this set has no elements. 116f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if this set has no elements, {@code false} 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * otherwise. 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #size 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isEmpty(); 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns an iterator on the elements of this set. The elements are 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * unordered. 126f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return an iterator on the elements of this set. 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see Iterator 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Iterator<E> iterator(); 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Removes the specified object from this set. 134f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object to remove. 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if this set was modified, {@code false} otherwise. 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws UnsupportedOperationException 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * when removing from this set is not supported. 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean remove(Object object); 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Removes all objects in the specified collection from this set. 145f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param collection 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the collection of objects to remove. 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if this set was modified, {@code false} otherwise. 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws UnsupportedOperationException 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * when removing from this set is not supported. 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean removeAll(Collection<?> collection); 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Removes all objects from this set that are not contained in the specified 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * collection. 157f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param collection 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the collection of objects to retain. 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if this set was modified, {@code false} otherwise. 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws UnsupportedOperationException 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * when removing from this set is not supported. 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean retainAll(Collection<?> collection); 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the number of elements in this set. 168f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the number of elements in this set. 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int size(); 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns an array containing all elements contained in this set. 175f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return an array of the elements from this set. 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object[] toArray(); 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns an array containing all elements contained in this set. If the 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified array is large enough to hold the elements, the specified array 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is used, otherwise an array of the same type is created. If the specified 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * array is used and is larger than this set, the array element following 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the collection elements is set to null. 186f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param array 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the array. 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return an array of the elements from this set. 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws ArrayStoreException 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * when the type of an element in this set cannot be stored in 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the type of the specified array. 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see Collection#toArray(Object[]) 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public <T> T[] toArray(T[] array); 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 197