浅谈为之奋斗过的Set接口
Set接口
Set接口存储一组唯一,无序的对象
HashSet 是Set接口常用的实现类
HashSet允许集合元素值为null 操作数据的方法与List类似
Set接口不存在get()方法
set 是一个不包含重复元素的集合(collction)。Set接口中的函数都是从Collection继承而来。
但限制了add 的使用,需要其不能添加重复元素。
public interface Set<E>extends Collection<E>
一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2)
的元素对 e1
和 e2
,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。
在所有构造方法以及 add、equals 和 hashCode 方法的协定上,Set 接口还加入了其他规定,这些规定超出了从 Collection 接口所继承的内容。出于方便考虑,它还包括了其他继承方法的声明(这些声明的规范已经专门针对 Set 接口进行了修改,但是没有包含任何其他的规定)。
对这些构造方法的其他规定是(不要奇怪),所有构造方法必须创建一个不包含重复元素的 set(正如上面所定义的)。
注:如果将可变对象用作 set 元素,那么必须极其小心。如果对象是 set 中某个元素,以一种影响 equals 比较的方式改变对象的值,那么 set 的行为就是不确定的。此项禁止的一个特殊情况是不允许某个 set 包含其自身作为元素。
某些 set 实现对其所包含的元素有所限制。例如,某些实现禁止 null 元素,而某些则对其元素的类型所有限制。试图添加不合格的元素会抛出未经检查的异常,通常是 NullPointerException 或 ClassCastException。试图查询不合格的元素是否存在可能会抛出异常,也可能简单地返回 false;某些实现会采用前一种行为,而某些则采用后者。概括地说,试图对不合格元素执行操作时,如果完成该操作后不会导致在 set 中插入不合格的元素,则该操作可能抛出一个异常,也可能成功,这取决于实现的选择。此接口的规范中将这样的异常标记为“可选”。
此接口是 Java Collections Framework的成员。
方法的详细信息:
size int size()返回 set 中的元素数(其容量)。如果 set 包含多个 Integer.MAX_VALUE 元素,则返回 Integer.MAX_VALUE。 指定者: 接口 Collection<E> 中的 size 返回: 此 set 中的元素数(其容量) -------------------------------------------------------------------------------- isEmpty boolean isEmpty()如果 set 不包含元素,则返回 true。 指定者: 接口 Collection<E> 中的 isEmpty 返回: 如果此 set 不包含元素,则返回 true -------------------------------------------------------------------------------- contains boolean contains(Object o)如果 set 包含指定的元素,则返回 true。更确切地讲,当且仅当 set 包含满足 (o==null ? e==null : o.equals(e)) 的元素 e 时返回 true。 指定者: 接口 Collection<E> 中的 contains 参数: o - 要测试此 set 中是否存在的元素 返回: 如果此 set 包含指定的元素,则返回 true 抛出: ClassCastException - 如果指定元素的类型与此 set 不兼容(可选) NullPointerException - 如果指定的元素为 null 并且此 set 不允许 null 元素(可选) -------------------------------------------------------------------------------- iterator Iterator<E> iterator()返回在此 set 中的元素上进行迭代的迭代器。返回的元素没有特定的顺序(除非此 set 是某个提供顺序保证的类的实例)。 指定者: 接口 Collection<E> 中的 iterator 指定者: 接口 Iterable<E> 中的 iterator 返回: 在此 set 中的元素上进行迭代的迭代器 -------------------------------------------------------------------------------- toArray Object[] toArray()返回一个包含 set 中所有元素的数组。如果此 set 对其迭代器返回的元素的顺序作出了某些保证,那么此方法也必须按相同的顺序返回这些元素。 由于此 set 不维护对返回数组的任何引用,因而它是安全的。(换句话说,即使此 set 受到数组的支持,此方法也必须分配一个新的数组)。因此,调用者可以随意修改返回的数组。 此方法充当基于数组的 API 与基于 collection 的 API 之间的桥梁。 指定者: 接口 Collection<E> 中的 toArray 返回: 包含此 set 中所有元素的数组 -------------------------------------------------------------------------------- toArray <T> T[] toArray(T[] a)返回一个包含此 set 中所有元素的数组;返回数组的运行时类型是指定数组的类型。如果指定的数组能容纳该 set,则它将在其中返回。否则,将分配一个具有指定数组的运行时类型和此 set 大小的新数组。 如果指定的数组能容纳此 set,并有剩余的空间(即该数组的元素比此 set 多),那么会将列表中紧接该 set 尾部的元素设置为 null。(只有在调用者知道此 set 不包含任何 null 元素时才能用此方法确定此 set 的长度)。 如果此 set 对其迭代器返回的元素的顺序作出了某些保证,那么此方法也必须按相同的顺序返回这些元素。 像 toArray() 方法一样,此方法充当基于数组的 API 与基于 collection 的 API 之间的桥梁。更进一步说,此方法允许对输出数组的运行时类型上进行精确控制,在某些情况下,可以用来节省分配开销。 假定 x 是只包含字符串的一个已知 set。以下代码用来将该 set 转储到一个新分配的 String 数组: String[] y = x.toArray(]);注意,toArray(]) 和 toArray() 在功能上是相同的。 指定者: 接口 Collection<E> 中的 toArray 参数: a - 存储此 set 中元素的数组(如果其足够大);否则将为此分配一个具有相同运行时类型的新数组。 返回: 包含此 set 中所有元素的数组 抛出: ArrayStoreException - 如果指定数组的运行时类型不是此 set 中所有元素的运行时类型的超类型 NullPointerException - 如果指定的数组为 null -------------------------------------------------------------------------------- add boolean add(E e)如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。更确切地讲,如果此 set 没有包含满足 (e==null ? e2==null : e.equals(e2)) 的元素 e2,则向该 set 中添加指定的元素 e。如果此 set 已经包含该元素,则该调用不改变此 set 并返回 false。结合构造方法上的限制,这就可以确保 set 永远不包含重复的元素。 上述规定并未暗示 set 必须接受所有元素;set 可以拒绝添加任意特定的元素,包括 null,并抛出异常,这与 Collection.add 规范中所描述的一样。每个 set 实现应该明确地记录对其可能包含元素的所有限制。 指定者: 接口 Collection<E> 中的 add 参数: e - 要添加到 set 中的元素 返回: 如果 set 尚未包含指定的元素,则返回 true 抛出: UnsupportedOperationException - 如果此 set 不支持 add 操作 ClassCastException - 如果指定元素的类不允许它添加到此 set NullPointerException - 如果指定的元素为 null 并且此 set 不允许 null 元素 IllegalArgumentException - 如果指定元素的某些属性不允许它添加到此 set -------------------------------------------------------------------------------- remove boolean remove(Object o)如果 set 中存在指定的元素,则将其移除(可选操作)。更确切地讲,如果此 set 中包含满足 (o==null ? e==null : o.equals(e)) 的元素 e,则移除它。如果此 set 包含指定的元素(或者此 set 由于调用而发生更改),则返回 true(一旦调用返回,则此 set 不再包含指定的元素)。 指定者: 接口 Collection<E> 中的 remove 参数: o - 从 set 中移除的对象(如果存在) 返回: 如果此 set 包含指定的对象,则返回 true 抛出: ClassCastException - 如果指定元素的类型与此 set 不兼容(可选) NullPointerException - 如果指定的元素为 null,并且此 set 不允许 null 元素(可选) UnsupportedOperationException - 如果此 set 不支持 remove 操作 -------------------------------------------------------------------------------- containsAll boolean containsAll(Collection<?> c)如果此 set 包含指定 collection 的所有元素,则返回 true。如果指定的 collection 也是一个 set,那么当该 collection 是此 set 的子集 时返回 true。 指定者: 接口 Collection<E> 中的 containsAll 参数: c - 检查是否包含在此 set 中的 collection 返回: 如果此 set 包含指定 collection 中的所有元素,则返回 true 抛出: ClassCastException - 如果指定 collection 中的一个或多个元素的类型与此 set 不兼容(可选) NullPointerException - 如果指定的 collection 包含一个或多个 null 元素并且此 set 不允许 null 元素(可选),或者指定的 collection 为 null 另请参见: contains(Object) -------------------------------------------------------------------------------- addAll boolean addAll(Collection<? extends E> c)如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中(可选操作)。如果指定的 collection 也是一个 set,则 addAll 操作会实际修改此 set,这样其值是两个 set 的一个并集。如果操作正在进行的同时修改了指定的 collection,则此操作的行为是不确定的。 指定者: 接口 Collection<E> 中的 addAll 参数: c - 包含要添加到此 set 中的元素的 collection 返回: 如果此 set 由于调用而发生更改,则返回 true 抛出: UnsupportedOperationException - 如果 set 不支持 addAll 操作 ClassCastException - 如果某些指定 collection 元素的类不允许它添加到此 set NullPointerException - 如果指定的 collection 包含一个或多个 null 元素并且此 set 不允许 null 元素,或者指定的 collection 为 null IllegalArgumentException - 如果指定 collection 元素的某些属性不允许它添加到此 set 另请参见: add(Object) -------------------------------------------------------------------------------- retainAll boolean retainAll(Collection<?> c)仅保留 set 中那些包含在指定 collection 中的元素(可选操作)。换句话说,移除此 set 中所有未包含在指定 collection 中的元素。如果指定的 collection 也是一个 set,则此操作会实际修改此 set,这样其值是两个 set 的一个交集。 指定者: 接口 Collection<E> 中的 retainAll 参数: c - 包含要保留到此 set 中的元素的 collection 返回: 如果此 set 由于调用而发生更改,则返回 true 抛出: UnsupportedOperationException - 如果此 set 不支持 retainAll 操作 ClassCastException - 如果此 set 元素的类与指定的 collection 不兼容(可选) NullPointerException - 如果此 set 包含 null 元素并且指定的 collection 不支持 null 元素(可选),或者指定的 collection 为 null 另请参见: remove(Object) -------------------------------------------------------------------------------- removeAll boolean removeAll(Collection<?> c)移除 set 中那些包含在指定 collection 中的元素(可选操作)。如果指定的 collection 也是一个 set,则此操作会实际修改此 set,这样其值是两个 set 的一个不对称差集。 指定者: 接口 Collection<E> 中的 removeAll 参数: c - 包含要从此 set 中移除的元素的 collection 返回: 如果此 set 由于调用而发生更改,则返回 true 抛出: UnsupportedOperationException - 如果此 set 不支持 removeAll 操作 ClassCastException - 如果此 set 元素的类与指定的 collection 不兼容(可选) NullPointerException - 如果此 set 包含 null 元素并且指定的 collection 不允许 null 元素(可选),或者指定的 collection 为 null 另请参见: remove(Object), contains(Object) -------------------------------------------------------------------------------- clear void clear()移除此 set 中的所有元素(可选操作)。此调用返回后该 set 将是空的。 指定者: 接口 Collection<E> 中的 clear 抛出: UnsupportedOperationException - 如果此 set 不支持 clear 方法 -------------------------------------------------------------------------------- equals boolean equals(Object o)比较指定对象与此 set 的相等性。如果指定的对象也是一个 set,两个 set 的大小相同,并且指定 set 的所有成员都包含在此 set 中(或者,此 set 的所有成员都包含在指定的 set 中也一样),则返回 true。此定义确保了 equals 方法可在不同的 set 接口实现间正常工作。 指定者: 接口 Collection<E> 中的 equals 覆盖: 类 Object 中的 equals 参数: o - 要与此 set 进行相等性比较的对象 返回: 如果指定的对象等于此 set,则返回 true ----------------------------------------------------------------
hashCode
int hashCode()
- 返回 set 的哈希码值。一个 set 的哈希码定义为此 set 中所有元素的哈希码和,其中 null 元素的哈希码定义为零。这就确保对于任意两个 set s1 和 s2 而言,s1.equals(s2) 就意味着 s1.hashCode()==s2.hashCode(),正如
Object.hashCode()
的常规协定所要求的那样。 -
- 指定者:
- 接口
Collection<E>
中的hashCode
- 覆盖:
- 类
Object
中的hashCode
-
- 返回:
- 此 set 的哈希码值
Set接口的实现类
HashSet类
public class HashSet<E>extends AbstractSet<E>implements Set<E>, Cloneable, Serializable
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
此类为基本操作提供了稳定性能,这些基本操作包括 add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。
对此 set 进行迭代所需的时间与 HashSet 实例的大小(元素的数量)和底层 HashMap 实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。
注意,此实现不是同步的。如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步。
这通常是通过对自然封装该 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 Collections.synchronizedSet
方法来“包装” set。最好在创建时完成这一操作,以防止对该 set 进行意外的不同步访问:
Set s = Collections.synchronizedSet(new HashSet(...));
此类的 iterator 方法返回的迭代器是快速失败 的:在创建迭代器之后,如果对 set 进行修改,除非通过迭代器自身的 remove 方法,否则在任何时间以任何方式对其进行修改,Iterator 都将抛出 ConcurrentModificationException
。
因此,面对并发的修改,迭代器很快就会完全失败,而不冒将来在某个不确定时间发生任意不确定行为的风险。
注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器在尽最大努力抛出 ConcurrentModificationException。
因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误做法:迭代器的快速失败行为应该仅用于检测 bug。
此类是 Java Collections Framework 的成员。
构造方法:
HashSet ,加载因子是 0.75。 -------------------------------------------------------------------------------- HashSet public HashSet(Collection<? extends E> c)构造一个包含指定 collection 中的元素的新 set。使用默认的加载因子 0.75 和足以包含指定 collection 中所有元素的初始容量来创建 HashMap。 参数: c - 其中的元素将存放在此 set 中的 collection 抛出: NullPointerException - 如果指定的 collection 为 null -------------------------------------------------------------------------------- HashSet public HashSet(int initialCapacity, float loadFactor)构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和指定的加载因子。 参数: initialCapacity - 哈希映射的初始容量 loadFactor - 哈希映射的加载因子 抛出: IllegalArgumentException - 如果初始容量小于零,或者加载因子为非正数 -------------------------------------------------------------------------------- HashSet public HashSet(int initialCapacity)构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和默认的加载因子(0.75)。 参数: initialCapacity - 哈希表的初始容量 抛出: IllegalArgumentException - 如果初始容量小于零
方法详细:
iterator public Iterator<E> iterator()返回对此 set 中元素进行迭代的迭代器。返回元素的顺序并不是特定的。 指定者: 接口 Iterable<E> 中的 iterator 指定者: 接口 Collection<E> 中的 iterator 指定者: 接口 Set<E> 中的 iterator 指定者: 类 AbstractCollection<E> 中的 iterator 返回: 对此 set 中元素进行迭代的 Iterator 另请参见: ConcurrentModificationException -------------------------------------------------------------------------------- size public int size()返回此 set 中的元素的数量(set 的容量)。 指定者: 接口 Collection<E> 中的 size 指定者: 接口 Set<E> 中的 size 指定者: 类 AbstractCollection<E> 中的 size 返回: 此 set 中的元素的数量(set 的容量) -------------------------------------------------------------------------------- isEmpty public boolean isEmpty()如果此 set 不包含任何元素,则返回 true。 指定者: 接口 Collection<E> 中的 isEmpty 指定者: 接口 Set<E> 中的 isEmpty 覆盖: 类 AbstractCollection<E> 中的 isEmpty 返回: 如果此 set 不包含任何元素,则返回 true -------------------------------------------------------------------------------- contains public boolean contains(Object o)如果此 set 包含指定元素,则返回 true。 更确切地讲,当且仅当此 set 包含一个满足 (o==null ? e==null : o.equals(e)) 的 e 元素时,返回 true。 指定者: 接口 Collection<E> 中的 contains 指定者: 接口 Set<E> 中的 contains 覆盖: 类 AbstractCollection<E> 中的 contains 参数: o - 其在此 set 中的存在已得到测试的元素 返回: 如果此 set 包含指定元素,则返回 true -------------------------------------------------------------------------------- add public boolean add(E e)如果此 set 中尚未包含指定元素,则添加指定元素。更确切地讲,如果此 set 没有包含满足 (e==null ? e2==null : e.equals(e2)) 的元素 e2,则向此 set 添加指定的元素 e。如果此 set 已包含该元素,则该调用不更改 set 并返回 false。 指定者: 接口 Collection<E> 中的 add 指定者: 接口 Set<E> 中的 add 覆盖: 类 AbstractCollection<E> 中的 add 参数: e - 将添加到此 set 中的元素 返回: 如果此 set 尚未包含指定元素,则返回 true -------------------------------------------------------------------------------- remove public boolean remove(Object o)如果指定元素存在于此 set 中,则将其移除。更确切地讲,如果此 set 包含一个满足 (o==null ? e==null : o.equals(e)) 的元素 e,则将其移除。如果此 set 已包含该元素,则返回 true(或者:如果此 set 因调用而发生更改,则返回 true)。(一旦调用返回,则此 set 不再包含该元素)。 指定者: 接口 Collection<E> 中的 remove 指定者: 接口 Set<E> 中的 remove 覆盖: 类 AbstractCollection<E> 中的 remove 参数: o - 如果存在于此 set 中则需要将其移除的对象 返回: 如果 set 包含指定元素,则返回 true -------------------------------------------------------------------------------- clear public void clear()从此 set 中移除所有元素。此调用返回后,该 set 将为空。 指定者: 接口 Collection<E> 中的 clear 指定者: 接口 Set<E> 中的 clear 覆盖: 类 AbstractCollection<E> 中的 clear -------------------------------------------------------------------------------- clone public Object clone()返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。 覆盖: 类 Object 中的 clone 返回: 此 set 的浅表副本 另请参见: Cloneable
HashSet newsTitleSet = new HashSet(); NewTitle car = , "飞机", "管理员"); //增加元素 newsTitleSet.add(car); //遍历集合 for(Object obj :newsTitleList){ NewTitle title=(NewTitle)obj; System.out.println(title.getTitleName()); }
Treeset类
public class TreeSet<E>extends AbstractSet<E>implements NavigableSet<E>, Cloneable, Serializable基于 TreeMap 的 NavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。 此实现为基本操作(add、remove 和 contains)提供受保证的 log(n) 时间开销。 注意,如果要正确实现 Set 接口,则 set 维护的顺序(无论是否提供了显式比较器)必须与 equals 一致。(关于与 equals 一致 的精确定义,请参阅 Comparable 或 Comparator。)这是因为 Set 接口是按照 equals 操作定义的,但 TreeSet 实例使用它的 compareTo(或 compare)方法对所有元素进行比较,因此从 set 的观点来看,此方法认为相等的两个元素就是相等的。即使 set 的顺序与 equals 不一致,其行为也是 定义良好的;它只是违背了 Set 接口的常规协定。 注意,此实现不是同步的。如果多个线程同时访问一个 TreeSet,而其中至少一个线程修改了该 set,那么它必须 外部同步。这一般是通过对自然封装该 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 Collections.synchronizedSortedSet 方法来“包装”该 set。此操作最好在创建时进行,以防止对 set 的意外非同步访问: SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));此类的 iterator 方法返回的迭代器是快速失败 的:在创建迭代器之后,如果从结构上对 set 进行修改,除非通过迭代器自身的 remove 方法,否则在其他任何时间以任何方式进行修改都将导致迭代器抛出 ConcurrentModificationException。因此,对于并发的修改,迭代器很快就完全失败,而不会冒着在将来不确定的时间发生不确定行为的风险。 注意,迭代器的快速失败行为无法得到保证,一般来说,存在不同步的并发修改时,不可能作出任何肯定的保证。快速失败迭代器尽最大努力抛出 ConcurrentModificationException。因此,编写依赖于此异常的程序的做法是错误的,正确做法是:迭代器的快速失败行为应该仅用于检测 bug。 此类是 Java Collections Framework 的成员。
构造方法
TreeSet public TreeSet()构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。插入该 set 的所有元素都必须实现 Comparable 接口。另外,所有这些元素都必须是可互相比较的:对于 set 中的任意两个元素 e1 和 e2,执行 e1.compareTo(e2) 都不得抛出 ClassCastException。如果用户试图将违反此约束的元素添加到 set(例如,用户试图将字符串元素添加到其元素为整数的 set 中),则 add 调用将抛出 ClassCastException。 -------------------------------------------------------------------------------- TreeSet public TreeSet(Comparator<? super E> comparator)构造一个新的空 TreeSet,它根据指定比较器进行排序。插入到该 set 的所有元素都必须能够由指定比较器进行相互比较:对于 set 中的任意两个元素 e1 和 e2,执行 comparator.compare(e1, e2) 都不得抛出 ClassCastException。如果用户试图将违反此约束的元素添加到 set 中,则 add 调用将抛出 ClassCastException。 参数: comparator - 将用来对此 set 进行排序的比较器。如果该参数为 null,则使用元素的自然顺序。 -------------------------------------------------------------------------------- TreeSet public TreeSet(Collection<? extends E> c)构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。插入该 set 的所有元素都必须实现 Comparable 接口。另外,所有这些元素都必须是可互相比较的:对于 set 中的任意两个元素 e1 和 e2,执行 e1.compareTo(e2) 都不得抛出 ClassCastException。 参数: c - 一个 collection,其元素将组成新的 set 抛出: ClassCastException - 如果 c 中的元素不是 Comparable,或者是不可相互比较的 NullPointerException - 如果指定 collection 为 null -------------------------------------------------------------------------------- TreeSet public TreeSet(SortedSet<E> s)构造一个与指定有序 set 具有相同映射关系和相同排序的新 TreeSet。 参数: s - 一个有序 set,其元素将组成新 set 抛出: NullPointerException - 如果指定有序 set 为 null
方法详细信
iteratorpublic Iterator<E> iterator()返回在此 set 中的元素上按升序进行迭代的迭代器。 指定者: 接口 Iterable<E> 中的 iterator 指定者: 接口 Collection<E> 中的 iterator 指定者: 接口 NavigableSet<E> 中的 iterator 指定者: 接口 Set<E> 中的 iterator 指定者: 类 AbstractCollection<E> 中的 iterator 返回: 在此 set 中的元素上按升序进行迭代的迭代器 -------------------------------------------------------------------------------- descendingIterator public Iterator<E> descendingIterator()返回在此 set 元素上按降序进行迭代的迭代器。 指定者: 接口 NavigableSet<E> 中的 descendingIterator 返回: 在此 set 元素上按降序进行迭代的迭代器 -------------------------------------------------------------------------------- descendingSet public NavigableSet<E> descendingSet()从接口 NavigableSet 复制的描述 返回此 set 中所包含元素的逆序视图。降序 set 受此 set 的支持,因此对此 set 的更改将反映在降序 set 中,反之亦然。如果在对任一 set 进行迭代的同时修改了任一 set(通过迭代器自己的 remove 操作除外),则迭代结果是不确定的。 返回 set 的顺序等于 Collections.reverseOrder(comparator())。表达式 s.descendingSet().descendingSet() 返回的 s 视图基本等于 s。 指定者: 接口 NavigableSet<E> 中的 descendingSet 返回: 此 set 的逆序视图 -------------------------------------------------------------------------------- size public int size()返回 set 中的元素数(set 的容量)。 指定者: 接口 Collection<E> 中的 size 指定者: 接口 Set<E> 中的 size 指定者: 类 AbstractCollection<E> 中的 size 返回: 此 set 中的元素数(set 的容量) -------------------------------------------------------------------------------- isEmpty public boolean isEmpty()如果此 set 不包含任何元素,则返回 true。 指定者: 接口 Collection<E> 中的 isEmpty 指定者: 接口 Set<E> 中的 isEmpty 覆盖: 类 AbstractCollection<E> 中的 isEmpty 返回: 如果此 set 不包含任何元素,则返回 true -------------------------------------------------------------------------------- contains public boolean contains(Object o)如果此 set 包含指定的元素,则返回 true。更确切地讲,当且仅当此 set 包含满足 (o==null ? e==null : o.equals(e)) 的元素 e 时,返回 true。 指定者: 接口 Collection<E> 中的 contains 指定者: 接口 Set<E> 中的 contains 覆盖: 类 AbstractCollection<E> 中的 contains 参数: o - 将检查是否包含在此 set 中的对象 返回: 如果此 set 包含指定元素,则返回 true 抛出: ClassCastException - 如果指定对象无法与该 set 中的当前元素进行比较 NullPointerException - 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 -------------------------------------------------------------------------------- add public boolean add(E e)将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。更确切地讲,如果该 set 不包含满足 (e==null ? e2==null : e.equals(e2)) 的元素 e2,则将指定元素 e 添加到此 set 中。如果此 set 已经包含这样的元素,则该调用不改变此 set 并返回 false。 指定者: 接口 Collection<E> 中的 add 指定者: 接口 Set<E> 中的 add 覆盖: 类 AbstractCollection<E> 中的 add 参数: e - 要添加到此 set 的对象 返回: 如果此 set 尚未包含指定元素,则返回 true 抛出: ClassCastException - 如果指定对象无法与此 set 的当前元素进行比较 NullPointerException - 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 -------------------------------------------------------------------------------- remove public boolean remove(Object o)将指定的元素从 set 中移除(如果该元素存在于此 set 中)。更确切地讲,如果 set 中包含满足 (o==null ? e==null : o.equals(e)) 的元素 e,则移除一个这样的元素。如果此 set 包含这样的元素(或者此 set 由于调用而发生更改),则返回 true。(一旦调用返回,则此 set 不再包含这样的元素。) 指定者: 接口 Collection<E> 中的 remove 指定者: 接口 Set<E> 中的 remove 覆盖: 类 AbstractCollection<E> 中的 remove 参数: o - 将从此 set 中移除的对象(如果存在) 返回: 如果此 set 包含指定元素,则返回 true 抛出: ClassCastException - 如果指定对象无法与该 set 中的当前元素进行比较 NullPointerException - 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 -------------------------------------------------------------------------------- clear public void clear()移除此 set 中的所有元素。在此调用返回之后,set 将为空。 指定者: 接口 Collection<E> 中的 clear 指定者: 接口 Set<E> 中的 clear 覆盖: 类 AbstractCollection<E> 中的 clear -------------------------------------------------------------------------------- addAll public boolean addAll(Collection<? extends E> c)将指定 collection 中的所有元素添加到此 set 中。 指定者: 接口 Collection<E> 中的 addAll 指定者: 接口 Set<E> 中的 addAll 覆盖: 类 AbstractCollection<E> 中的 addAll 参数: c - 包含要添加到此 set 的元素的 collection 返回: 如果此 set 由于调用而发生更改,则返回 true 抛出: ClassCastException - 如果提供的元素无法与 set 中的当前元素进行比较 NullPointerException - 如果指定 collection 为 null,或者任何元素为 null 并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 另请参见: AbstractCollection.add(Object) -------------------------------------------------------------------------------- subSet public NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)从接口 NavigableSet 复制的描述 返回此 set 的部分视图,其元素范围从 fromElement 到 toElement。如果 fromElement 和 toElement 相等,则返回的 set 为空,除非 fromExclusive 和 toExclusive 都为 true。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可选 set 操作。 如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException。 指定者: 接口 NavigableSet<E> 中的 subSet 参数: fromElement - 返回 set 的低端点 fromInclusive - 如果低端点要包含在返回的视图中,则为 true toElement - 返回 set 的高端点 toInclusive - 如果高端点要包含在返回的视图中,则为 true 返回: 此 set 的部分视图,其元素范围从 fromElement(包括)到 toElement(不包括) 抛出: ClassCastException - 如果不能使用此 set 的比较器或者使用自然顺序(如果 set 没有比较器)比较 fromElement 和 toElement。如果 fromElement 或 toElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。 NullPointerException - 如果 fromElement 或 toElement 为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 IllegalArgumentException - 如果 fromElement 大于 toElement;如果此 set 本身有范围限制,并且 fromElement 或 toElement 位于范围的边界之外。 从以下版本开始: 1.6 -------------------------------------------------------------------------------- headSet public NavigableSet<E> headSet(E toElement, boolean inclusive)从接口 NavigableSet 复制的描述 返回此 set 的部分视图,其元素小于(或等于,如果 inclusive 为 true)toElement。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可选 set 操作。 如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException。 指定者: 接口 NavigableSet<E> 中的 headSet 参数: toElement - 返回 set 的高端点 inclusive - 如果高端点要包含在返回的视图中,则为 true 返回: 此 set 的部分视图,其元素小于(或等于,如果 inclusive 为 true)toElement 抛出: ClassCastException - 如果 toElement 与此 set 的比较器不兼容(如果 set 没有比较器;如果 toElement 没有实现 Comparable)。如果 toElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。 NullPointerException - 如果 toElement 为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 IllegalArgumentException - 如果此 set 本身有范围限制,并且 toElement 位于范围的边界之外 -------------------------------------------------------------------------------- tailSet public NavigableSet<E> tailSet(E fromElement, boolean inclusive)从接口 NavigableSet 复制的描述 返回此 set 的部分视图,其元素大于(或等于,如果 inclusive 为 true)fromElement。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可选 set 操作。 如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException。 指定者: 接口 NavigableSet<E> 中的 tailSet 参数: fromElement - 返回 set 的低端点 inclusive - 如果低端点要包含在返回的视图中,则为 true 返回: 此 set 的部分视图,其元素大于等于 fromElement 抛出: ClassCastException - 如果 fromElement 与此 set 的比较器不兼容(如果 set 没有任何比较器;如果 fromElement 没有实现 Comparable)。如果 fromElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。 NullPointerException - 如果 fromElement 为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 IllegalArgumentException - 如果此 set 本身有范围限制,并且 fromElement 位于范围的边界之外 -------------------------------------------------------------------------------- subSet public SortedSet<E> subSet(E fromElement, E toElement)从接口 NavigableSet 复制的描述 返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。(如果 fromElement 和 toElement 相等,则返回空的 set)。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可选 set 操作。 如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException。 等效于 subSet(fromElement, true, toElement, false)。 指定者: 接口 NavigableSet<E> 中的 subSet 指定者: 接口 SortedSet<E> 中的 subSet 参数: fromElement - 返回 set 的低端点(包括) toElement - 返回 set 的高端点(不包括) 返回: 此 set 的部分视图,其元素的范围从 fromElement(包括)到 toElement(不包括) 抛出: ClassCastException - 如果无法使用此 set 的比较器(如果 set 没有比较器,则使用自然顺序)比较 fromElement 和 toElement。如果 fromElement 或 toElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。 NullPointerException - 如果 fromElement 或 toElement 为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 IllegalArgumentException - 如果 fromElement 大于 toElement;如果此 set 本身有范围限制,并且 fromElement 或 toElement 位于范围的边界之外 -------------------------------------------------------------------------------- headSet public SortedSet<E> headSet(E toElement)从接口 NavigableSet 复制的描述 返回此 set 的部分视图,其元素严格小于 toElement。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可选 set 操作。 如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException。 等效于 headSet(toElement, false)。 指定者: 接口 NavigableSet<E> 中的 headSet 指定者: 接口 SortedSet<E> 中的 headSet 参数: toElement - 返回 set 的高端点(不包括) 返回: 此 set 的部分视图,其元素严格小于 toElement 抛出: ClassCastException - 如果 toElement 与此 set 的比较器不兼容(如果 set 没有比较器;如果 toElement 没有实现 Comparable)。如果 toElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。 NullPointerException - 如果 toElement 为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 IllegalArgumentException - 如果此 set 本身有范围限制,并且 toElement 位于范围的边界之外 -------------------------------------------------------------------------------- tailSet public SortedSet<E> tailSet(E fromElement)从接口 NavigableSet 复制的描述 返回此 set 的部分视图,其元素大于等于 fromElement。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可选 set 操作。 如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException。 等效于 tailSet(fromElement, true)。 指定者: 接口 NavigableSet<E> 中的 tailSet 指定者: 接口 SortedSet<E> 中的 tailSet 参数: fromElement - 返回 set 的低端点(包括) 返回: 此 set 的部分视图,其元素大于等于 fromElement 抛出: ClassCastException - 如果 fromElement 与此 set 的比较器不兼容(如果 set 没有比较器;如果 fromElement 没有实现 Comparable)。如果 fromElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。 NullPointerException - 如果 fromElement 为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 IllegalArgumentException - 如果此 set 本身有范围限制,并且 fromElement 位于范围的边界之外 -------------------------------------------------------------------------------- comparator public Comparator<? super E> comparator()从接口 SortedSet 复制的描述 返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null。 指定者: 接口 SortedSet<E> 中的 comparator 返回: 用来对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null -------------------------------------------------------------------------------- first public E first()从接口 SortedSet 复制的描述 返回此 set 中当前第一个(最低)元素。 指定者: 接口 SortedSet<E> 中的 first 返回: 此 set 中当前第一个(最低)元素 抛出: NoSuchElementException - 如果此 set 为空 -------------------------------------------------------------------------------- last public E last()从接口 SortedSet 复制的描述 返回此 set 中当前最后一个(最高)元素。 指定者: 接口 SortedSet<E> 中的 last 返回: 此 set 中当前最后一个(最高)元素 抛出: NoSuchElementException - 如果此 set 为空 -------------------------------------------------------------------------------- lower public E lower(E e)从接口 NavigableSet 复制的描述 返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回 null。 指定者: 接口 NavigableSet<E> 中的 lower 参数: e - 要匹配的值 返回: 小于 e 的最大元素;如果不存在这样的元素,则返回 null 抛出: ClassCastException - 如果指定元素不能与 set 中的当前元素进行比较 NullPointerException - 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 -------------------------------------------------------------------------------- floor public E floor(E e)从接口 NavigableSet 复制的描述 返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null。 指定者: 接口 NavigableSet<E> 中的 floor 参数: e - 要匹配的值 返回: 小于等于 e 的最大元素;如果不存在这样的元素,则返回 null 抛出: ClassCastException - 如果指定元素不能与 set 中的当前元素进行比较 NullPointerException - 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 -------------------------------------------------------------------------------- ceiling public E ceiling(E e)从接口 NavigableSet 复制的描述 返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null。 指定者: 接口 NavigableSet<E> 中的 ceiling 参数: e - 要匹配的值 返回: 大于等于 e 的最小元素;如果不存在这样的元素,则返回 null 抛出: ClassCastException - 如果指定元素不能与 set 中的当前元素进行比较 NullPointerException - 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 -------------------------------------------------------------------------------- higher public E higher(E e)从接口 NavigableSet 复制的描述 返回此 set 中严格大于给定元素的最小元素;如果不存在这样的元素,则返回 null。 指定者: 接口 NavigableSet<E> 中的 higher 参数: e - 要匹配的值 返回: 大于 e 的最小元素;如果不存在这样的元素,则返回 null 抛出: ClassCastException - 如果指定元素不能与 set 中的当前元素进行比较 NullPointerException - 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素 ------------------------------------------------------------------------------- pollFirst public E pollFirst()从接口 NavigableSet 复制的描述 获取并移除第一个(最低)元素;如果此 set 为空,则返回 null。 指定者: 接口 NavigableSet<E> 中的 pollFirst 返回: 第一个元素;如果此 set 为空,则返回 null -------------------------------------------------------------------------------- pollLast public E pollLast()从接口 NavigableSet 复制的描述 获取并移除最后一个(最高)元素;如果此 set 为空,则返回 null。 指定者: 接口 NavigableSet<E> 中的 pollLast 返回: 最后一个元素;如果此 set 为空,则返回 null -------------------------------------------------------------------------------- clone public Object clone()返回 TreeSet 实例的浅表副本。(这些元素本身不被复制。) 覆盖: 类 Object 中的 clone 返回: 此 set 的浅表副本
代码案例
public class TestSet { public static void main(String [] args) { Set<Integer> hashSet = new HashSet<Integer>(); Set<Integer> treeSet = new TreeSet<Integer>(); hashSet = fillSet(hashSet); System.out.println(hashSet); treeSet = fillSet(treeSet); System.out.println(treeSet); } public static Set<Integer> fillSet(Set<Integer> set) { ) { +)); } return set; } }
浅谈为之奋斗过的Set接口的更多相关文章
- 浅谈Service层为何要有接口
被人随意问了一句,为何每个service层都要写一个接口呢,多麻烦~虽然想说点什么,但是又不知道从何说起,只好从新整理一下思绪. 情景1:在开源框架中有很多这种情况,就是某个功能支持用户自定义扩展.说 ...
- 【WebApi系列】浅谈HTTP
[01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi如何传递参数 [04]详解WebApi测试和PostMan [05]浅谈WebApi Core ...
- 【WebApi系列】浅谈HTTP在WebApi开发中的运用
WebApi系列文章 [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi参数的传递 [04]详解WebApi测试和PostMan [05]浅谈W ...
- 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service ...
- 示例浅谈PHP与手机APP开发,即API接口开发
示例浅谈PHP与手机APP开发,即API接口开发 API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发中常见的软件架构模式,并且诞 ...
- 浅谈Java中接口与抽象类的异同
浅谈Java中接口与抽象类的异同 抽象类和接口这两个概念困扰了我许久,在我看来,接口与抽象类真的十分相似.期间也曾找过许许多多的资料,参考了各路大神的见解,也只能是简简单单地在语法上懂得两者的区别.硬 ...
- 浅谈Java接口(Interface)
浅谈Java接口 先不谈接口,不妨设想一个问题? 如果你写了个Animal类,有许多类继承了他,包括Hippo(河马), Dog, Wolf, Cat, Tiger这几个类.你把这几个类拿给别人用,但 ...
- 浅谈ASP.NET的Postback
说道ASP.NET的Postback,就得说Web Page的生命周期,但是Web Page的生命周期却不是三言两语就能够说得清楚的,所以在这里单纯站的编程的角度,撇开Web Page 的生命周期浅谈 ...
- iOS 自定义转场动画浅谈
代码地址如下:http://www.demodashi.com/demo/11612.html 路漫漫其修远兮,吾将上下而求索 前记 想研究自定义转场动画很久了,时间就像海绵,挤一挤还是有的,花了差不 ...
随机推荐
- Android之三种网络请求解析数据(最佳案例)
AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...
- HashMap的工作原理
HashMap的工作原理 HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间 ...
- Tomcat 部署我的第一个程序
idea 生成war包.先双击clean,再双击package.生成成功之后就会产生war包. 第二步:将生成好的war文件复制到tomcat文件夹下. 第三步:配置tomcat的server.xml ...
- Linux自动共享USB设备:udev+Samba
一.概述 公司最近要我实现USB设备插入Ubuntu后,自动共享到网络上,能像Windows共享一样(如\\192.168.1.10)访问里面的内容,不需要写入权限.当时听完这需求,我这新人表示惊呆了 ...
- jsp
-----------------
- 我的MYSQL学习心得(九) 索引
我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 避免调试代码导致IE出错
记录一下 if(!window.console){ var names = ["log", "debug", "info", "w ...
- MVVM大比拼之avalon.js源码精析
简介 avalon是国内 司徒正美 写的MVVM框架,相比同类框架它的特点是: 使用 observe 模式,性能高. 将原始对象用object.defineProperty重写,不需要用户像用knoc ...
- CSS3变形记(上):千变万化的Div
传统上,css就是用来对网页进行布局和渲染网页样式的.然而,css3的出现彻底打破了这一格局.了解过css3的人都知道,css3不但可以对网页进行布局和渲染样式,还可以绘制一些图形.对元素进行2D和3 ...
- Fedora 22中的用户和用户组管理
The control of users and groups is a core element of Fedora system administration. This chapter expl ...