Set介面繼承了Collection介面,繼承了所有Collection介面的方法,下面予以分析Set源碼。
package java.util;/** * 不包含有重複元素的無序集合。通過.equals()方法校正是否重複 */public interface Set<E> extends Collection<E> { // Query Operations /** * Returns the number of elements in this set (its cardinality). If this * set contains more than <tt>Integer.MAX_VALUE</tt> elements, returns * <tt>Integer.MAX_VALUE</tt>. * * @return the number of elements in this set (its cardinality) * 返回set中元素的數量 * 如果元素數量大於2^31-1,返回的值為2^31-1 */ int size(); /** * set集合是否為空白,若為空白,則返回true * 若不為空白,則返回false */ boolean isEmpty(); /** * set集合是否包含元素o,若包含,返回true;否則返回false */ boolean contains(Object o); /** * 返回set集合的迭代器 */ Iterator<E> iterator(); /** * 將set集合轉化為數組 */ Object[] toArray(); /** * Returns an array containing all of the elements in this set; the * runtime type of the returned array is that of the specified array. * If the set fits in the specified array, it is returned therein. * Otherwise, a new array is allocated with the runtime type of the * specified array and the size of this set. * * <p>If this set fits in the specified array with room to spare * (i.e., the array has more elements than this set), the element in * the array immediately following the end of the set is set to * <tt>null</tt>. (This is useful in determining the length of this * set <i>only</i> if the caller knows that this set does not contain * any null elements.) * * <p>If this set makes any guarantees as to what order its elements * are returned by its iterator, this method must return the elements * in the same order. * * <p>Like the {@link #toArray()} method, this method acts as bridge between * array-based and collection-based APIs. Further, this method allows * precise control over the runtime type of the output array, and may, * under certain circumstances, be used to save allocation costs. * * <p>Suppose <tt>x</tt> is a set known to contain only strings. * The following code can be used to dump the set into a newly allocated * array of <tt>String</tt>: * * <pre> * String[] y = x.toArray(new String[0]);</pre> * * Note that <tt>toArray(new Object[0])</tt> is identical in function to * <tt>toArray()</tt>. * * @param a the array into which the elements of this set are to be * stored, if it is big enough; otherwise, a new array of the same * runtime type is allocated for this purpose. * @return an array containing all the elements in this set * @throws ArrayStoreException if the runtime type of the specified array * is not a supertype of the runtime type of every element in this * set * @throws NullPointerException if the specified array is null */ <T> T[] toArray(T[] a); // Modification Operations /** * 向set中添加元素e */ boolean add(E e); /** * 移除元素o */ boolean remove(Object o); // Bulk Operations /** * set是否包含c中所有元素 */ boolean containsAll(Collection<?> c); /** * 將c中所有元素添加到set中 */ boolean addAll(Collection<? extends E> c); /** * 保留c中所有元素 */ boolean retainAll(Collection<?> c); /** * 移除set中所有c的元素 */ boolean removeAll(Collection<?> c); /** * 移除所有set元素 */ void clear(); // Comparison and hashing /** * 是否為同一對象 */ boolean equals(Object o); /** * 擷取set的hash值 */ int hashCode();}