Set源码解析

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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值