首页 > 学院 > 开发设计 > 正文

Set源码解析

2019-11-06 07:56:09
字体:
来源:转载
供稿:网友

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();}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表