Set接口

所在包:java.util.Set<E>

参数类型:E - 由此集合维护的元素的类型 

All Superinterfaces:Collection <E>, Iterable <E>

All Known Subinterfaces:NavigableSet <E>, SortedSet <E>

所有已知实现类:

AbstractSetConcurrentHashMap.KeySetViewConcurrentSkipListSetCopyOnWriteArraySetEnumSetHashSetJobStateReasonsLinkedHashSetTreeSet


 

public interface Set<E>

extends Collection<E>

  • 不包含重复元素的集合。 更正式地说法,集合不包含一对元素e1e2 ,使得e1.equals(e2) ,并且最多一个空元素。 正如其名称所暗示的那样,这个接口模拟了数学抽象。
  • Set接口除了继承自Collection接口的所有构造函数的合同以及add,equalshashCode方法的合同外 , 增加了其他规定。 其他继承方法的声明也包括在这里以方便。 (伴随这些声明的规范已经量身定做Set接口,但它们不包含任何附加的规定。)
  • 构造函数的额外规定并不奇怪,所有构造函数都必须创建一个不包含重复元素的集合(如上所定义)。
  • 注意:如果可变对象用作设置元素,则必须非常小心。 如果对象的值以影响equals比较的方式更改,而对象是集合中的元素, 则不指定集合的行为。 这种禁止的一个特殊情况是,一个集合不允许将其本身作为一个元素
  • 一些集合实现对它们可能包含的元素有限制。 例如,一些实现禁止空元素,有些实现对元素的类型有限制。 尝试添加不合格元素会引发未经检查的异常,通常为NullPointerExceptionClassCastException 。 尝试查询不合格元素的存在可能会引发异常,或者可能只是返回false; 一些实现将展现出前者的行为,一些实现将展现出后者。 更一般来说,尝试对不符合条件的元素的操作,其完成不会导致不合格元素插入到集合中,可能会导致异常,或者可能会成功执行该选项。 此异常在此接口的规范中标记为“可选”。
  • 此接口是成员Java Collections Framework

 

从以下版本开始:1.2

另请参见:CollectionListSortedSetHashSetTreeSetAbstractSetCollections.singleton(java.lang.Object)Collections.EMPTY_SET

Modifier and TypeMethod and Description
boolean add(E e)
如果指定的元素不存在,则将其指定的元素添加(可选操作)。
boolean addAll(Collection<? extends E> c)
将指定集合中的所有元素添加到此集合(如果尚未存在)(可选操作)。
void clear()
从此集合中删除所有元素(可选操作)。
boolean contains(Object o)
如果此集合包含指定的元素,则返回 true
boolean containsAll(Collection<?> c)
返回 true如果此集合包含所有指定集合的元素。
boolean equals(Object o)
将指定的对象与此集合进行比较以实现相等。
int hashCode()
返回此集合的哈希码值。
boolean isEmpty()
如果此集合不包含元素,则返回 true
Iterator<E> iterator()
返回此集合中元素的迭代器。
boolean remove(Object o)
如果存在,则从该集合中删除指定的元素(可选操作)。
boolean removeAll(Collection<?> c)
从此集合中删除指定集合中包含的所有元素(可选操作)。
boolean retainAll(Collection<?> c)
仅保留该集合中包含在指定集合中的元素(可选操作)。
int size()
返回此集合中的元素数(其基数)。
default Spliterator<E> spliterator()
在此集合中的元素上创建一个 Spliterator
Object[] toArray()
返回一个包含此集合中所有元素的数组。
<T> T[] toArray(T[] a)
返回一个包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。

Methods inherited from interface java.util.Collection

parallelStream, removeIf, stream

 

Methods inherited from interface java.lang.Iterable

forEach

 

方法详细信息

  • size

    int size()
    返回此集合中的元素数(其基数)。 如果此集合包含超过Integer.MAX_VALUE个元素,则返回Integer.MAX_VALUE
    Specified by:
    size在接口 Collection<E>
    结果
    该集合中的元素数(其基数)
  • isEmpty

    boolean isEmpty()
    如果此集合不包含元素,则返回 true
    Specified by:
    isEmpty中的 Collection<E>
    结果
    true如果这个集合不包含元素
  • contains

    boolean contains(Object o)
    如果此集合包含指定的元素,则返回true 。 更正式地,返回true当且仅当该集合包含元素e使得(o==null ? e==null : o.equals(e))
    Specified by:
    contains在界面 Collection<E>
    参数
    o - 要在此集合中存在的元素将被测试
    结果
    true如果此集合包含指定的元素
    异常
    ClassCastException - 如果指定元素的类型与此集不兼容( optional
    NullPointerException - 如果指定的元素为空,并且该集合不允许空元素( optional
  • iterator

    Iterator<E> iterator()
    返回此集合中元素的迭代器。 元素没有特定的顺序返回(除非此集合是提供保证的某个类的实例)。
    Specified by:
    iterator在接口 Collection<E>
    Specified by:
    iterator在界面 Iterable<E>
    结果
    这个集合中的元素的迭代器
  • toArray

    Object[] toArray()
    返回一个包含此集合中所有元素的数组。 如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。

    返回的数组将是“安全的”,因为该集合不保留对它的引用。 (换句话说,这个方法必须分配一个新的数组,即使这个数组是由数组支持的)。 因此,调用者可以自由地修改返回的数组。

    此方法充当基于阵列和基于集合的API之间的桥梁。

    Specified by:
    toArray在接口 Collection<E>
    结果
    一个包含此集合中所有元素的数组
  • toArray

    <T> T[] toArray(T[] a)
    返回一个包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。 如果集合适合指定的数组,则返回其中。 否则,将为指定数组的运行时类型和此集合的大小分配一个新数组。

    如果这个集合适合指定的数组,有空余的空间(即,该数组的元素多于此集合),紧随集合结束后的数组中的元素设置为null 。 (这在调用者知道此集合不包含任何空元素时才可用于确定此集合的长度。)

    如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。

    toArray()方法一样,此方法充当基于数组和基于集合的API之间的桥梁。 此外,该方法允许精确地控制输出阵列的运行时类型,并且在某些情况下可以用于节省分配成本。

    假设x是一个已知只包含字符串的集合。 下面的代码可用于所述一组转储到的String一个新分配的阵列:

      String[] y = x.toArray(new String[0]); 
    请注意, toArray(new Object[0])的功能与toArray()相同
    Specified by:
    toArray在接口 Collection<E>
    参数类型
    T - 包含集合的数组的运行时类型
    参数
    a - 要存储此集合的元素的数组,如果它足够大; 否则,为此目的分配相同运行时类型的新数组。
    结果
    一个包含此集合中所有元素的数组
    异常
    ArrayStoreException - 如果指定数组的运行时类型不是此集合中每个元素的运行时类型的超类型
    NullPointerException - 如果指定的数组为空
  • add

    boolean add(E e)
    如果指定的元素不存在,则将其指定的元素添加(可选操作)。 更正式地,将指定的元素e添加到该集合,如果集合不包含元素e2 ,使得(e==null ? e2==null : e.equals(e2)) 。 如果该集合已经包含该元素,则该呼叫将保持不变,并返回false 。 结合对构造函数的限制,这样可以确保集合不会包含重复的元素。

    上述规定并不意味着集合必须接受所有要素; 套可以拒绝增加任何特定元件,包括null,并且抛出异常,作为用于本说明书中描述Collection.add 。 单个集合实现应清楚地记录对它们可能包含的元素的任何限制。

    Specified by:
    add在界面 Collection<E>
    参数
    e - 要添加到此集合的元素
    结果
    true如果此集合尚未包含指定的元素
    异常
    UnsupportedOperationException -如果 add操作不受此组支持
    ClassCastException - 如果指定元素的类阻止将其添加到此集合
    NullPointerException - 如果指定的元素为空,并且此集合不允许空元素
    IllegalArgumentException - 如果指定元素的某些属性阻止将其添加到此集合
  • remove

    boolean remove(Object o)
    如果存在,则从该集合中删除指定的元素(可选操作)。 更正式地,删除一个元素e这样的(o==null ? e==null : o.equals(e)) ,如果这个集合包含这样一个元素。 返回true如果这个集合包含元素(或等效地,如果该集合由于调用而更改)。 (一旦调用返回,此集合将不包含该元素。)
    Specified by:
    remove在界面 Collection<E>
    参数
    o - 要从此集合中删除的对象(如果存在)
    结果
    true如果这个集合包含指定的元素
    异常
    ClassCastException - 如果指定元素的类型与此集不兼容( optional
    NullPointerException - 如果指定的元素为空,并且该集合不允许空元素( optional
    UnsupportedOperationException - 如果该 集合不支持remove操作
  • containsAll

    boolean containsAll(Collection<?> c)
    返回true如果此集合包含所有指定集合的元素。 如果指定的集合也是一个集合,如果它是该集合的子集 ,则此方法返回true
    Specified by:
    containsAll在接口 Collection<E>
    参数
    c - 要在此集合中检查收集的集合
    结果
    true如果此集合包含指定集合的所有元素
    异常
    ClassCastException - 如果指定集合中的一个或多个元素的类型与此集合不兼容( optional
    NullPointerException - 如果指定的集合包含一个或多个空元素,并且此集合不允许空元素( optional ),或者如果指定的集合为空
    另请参见:
    contains(Object)
  • addAll

    boolean addAll(Collection<? extends E> c)
    将指定集合中的所有元素添加到此集合(如果尚未存在)(可选操作)。 如果指定集合也是一个set,这样其值是两个集合的并addAll操作实际修改此设置。 如果在操作进行中修改了指定的集合,则此操作的行为是未定义的。
    Specified by:
    addAll在接口 Collection<E>
    参数
    c - 包含要添加到此集合的元素的集合
    结果
    true如果此设置由于呼叫而更改
    异常
    UnsupportedOperationException -如果 addAll操作不受此组支持
    ClassCastException - 如果指定集合的元素的类阻止将其添加到此集合
    NullPointerException - 如果指定的集合包含一个或多个空元素,并且此集合不允许空元素,或者如果指定的集合为空
    IllegalArgumentException - 如果指定集合的元素的某些属性阻止其添加到此集合
    另请参见:
    add(Object)
  • retainAll

    boolean retainAll(Collection<?> c)
    仅保留该集合中包含在指定集合中的元素(可选操作)。 换句话说,从这个集合中删除它不包含在指定集合中的所有元素。 如果指定的集合也是一个集合,则此操作有效地修改该集合,使其值是两组的交集
    Specified by:
    retainAll在界面 Collection<E>
    参数
    c - 包含要保留在此集合中的元素的集合
    结果
    true如果此设置由于呼叫而更改
    异常
    UnsupportedOperationException -如果 retainAll操作不受此组支持
    ClassCastException - 如果此集合的元素的类与指定的集合不兼容( optional
    NullPointerException - 如果此集合包含一个空元素,并且指定的集合不允许空元素( optional ),或者如果指定的集合为空
    另请参见:
    remove(Object)
  • removeAll

    boolean removeAll(Collection<?> c)
    从此集合中删除指定集合中包含的所有元素(可选操作)。 如果指定的集合也是集合,则该操作有效地修改该集合,使其值是两组的非对称集合差异
    Specified by:
    removeAll在接口 Collection<E>
    参数
    c - 包含要从此集合中删除的元素的集合
    结果
    true如果此设置由于呼叫而更改
    异常
    UnsupportedOperationException -如果 removeAll操作不受此组支持
    ClassCastException - 如果此集合的元素的类与指定的集合不兼容( optional
    NullPointerException - 如果此集合包含一个空元素,并且指定的集合不允许空元素( optional ),或者如果指定的集合为空
    另请参见:
    remove(Object)contains(Object)
  • clear

    void clear()
    从此集合中删除所有元素(可选操作)。 此呼叫返回后,该组将为空。
    Specified by:
    clear在界面 Collection<E>
    异常
    UnsupportedOperationException - 如果此集合不支持 clear方法
  • equals

    boolean equals(Object o)
    将指定的对象与此集合进行比较以实现相等。 如果指定的对象也是一个集合,则返回true ,两个集合的大小相同,并且该集合中的每个成员都包含在该集合中(或者等效地,该集合的每个成员都包含在指定的集合中)。 此定义可确保equals方法在集合接口的不同实现之间正常工作。
    Specified by:
    equals在接口 Collection<E>
    重写:
    equalsObject
    参数
    o - 要与该集合相等的对象
    结果
    true如果指定的对象等于此集合
    另请参见:
    Object.hashCode()HashMap
  • hashCode

    int hashCode()
    返回此集合的哈希码值。 集合的哈希码被定义为集合中的元素的哈希码的和,其中null元素的哈希码被定义为零。 这确保了s1.equals(s2)意味着s1.hashCode()==s2.hashCode()对于任何两套s1s2 ,根据Object.hashCode()的一般合同要求
    Specified by:
    hashCode在接口 Collection<E>
    重写:
    hashCodeObject
    结果
    该集合的哈希码值
    另请参见:
    Object.equals(Object)equals(Object)
  • spliterator

    default Spliterator<E> spliterator()
    在此集合中的元素上创建一个Spliterator

    Spliterator报告Spliterator.DISTINCT 。 实施应记录其他特征值的报告。

    Specified by:
    spliterator在接口 Collection<E>
    Specified by:
    spliterator在接口 Iterable<E>
    实现要求:
    默认实现从集合的Iterator创建一个late-binding分割Iterator 。 分割器继承集合迭代器的故障快速属性。

    创建的Spliterator另外报告Spliterator.SIZED

    Implementation Note:
    创建的 Spliterator另外报告 Spliterator.SUBSIZED
    结果
    一个 Spliterator在这个集合中的元素
    从以下版本开始:
    1.8 

 

posted @ 2020-03-06 09:49  厸清扬  阅读(238)  评论(0编辑  收藏  举报