public abstract class AbstractCollection<E> extends Object implements Collection<E>
为了实现一个不可修改的集合,程序员只需要扩展这个类提供的iterator和size方法的实现。(由iterator方法返回的迭代器必须实现hasNext和next。)
为了实现一个可修改的集合,程序员必须重写这个类的add方法(否则抛出一个UnsupportedOperationException),和iterator方法返回的迭代器必须另外实施remove方法。
程序员通常提供一个空(无参数)和Collection构造函数,按推荐的Collection接口规范。
这个类中的每个非抽象方法的文档都详细描述了它的实现。这些方法可以被重写如果集合采取了更有效的实现。
这个班的一员 Java Collections Framework。
Collection
Modifier | Constructor and Description |
---|---|
protected |
AbstractCollection()
唯一的构造函数。
|
Modifier and Type | Method 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 |
isEmpty()
返回
true如果集合不包含任何元素。
|
abstract Iterator<E> |
iterator()
返回包含在此集合中的元素的迭代器。
|
boolean |
remove(Object o)
从这个集合中移除指定元素的一个实例,如果它是存在的(可选操作)。
|
boolean |
removeAll(Collection<?> c)
删除此集合中包含的所有元素(可选操作)的所有元素(可选操作)。
|
boolean |
retainAll(Collection<?> c)
仅保留包含在指定集合中的这个集合中的元素(可选操作)。
|
abstract int |
size()
返回此集合中的元素的数目。
|
Object[] |
toArray()
返回包含此集合中所有元素的数组。
|
<T> T[] |
toArray(T[] a)
返回包含此集合中所有元素的数组;返回数组的运行时类型是指定的数组的运行时类型。
|
String |
toString()
返回此集合的字符串表示形式。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
equals, hashCode, parallelStream, removeIf, spliterator, stream
public abstract int size()
Collection
size
接口
Collection<E>
public boolean isEmpty()
此实现返回size() == 0。
isEmpty
接口
Collection<E>
public boolean contains(Object o)
这个实现遍历集合中的元素,依次检查每个元素以指定元素的平等。
contains
接口
Collection<E>
o
-集合中存在的元素进行测试
ClassCastException
-如果指定元素的类型与集合不相容(
optional)
NullPointerException
-如果指定元素为null,集合不允许null元素(
optional)
public Object[] toArray()
返回的数组将是“安全”的,没有引用它是由这个集合维护的。换句话说,这种方法必须分配一个新的数组,即使这个集合是由一个数组的支持。因此,调用方可以自由修改返回的数组。
此方法作为基于数组和基于集合的原料药之间的桥梁。
此实现返回一个数组包含的所有元素的集合的迭代器返回的,在同一顺序,存储在数组的连续的元素,从指数0
。返回的数组的长度相等的元素个数由迭代器返回的,即使在迭代这个集合的大小变化,如可能如果集合允许并发修改迭代过程中发生。的size
方法称为只是作为一个优化的暗示;正确的结果是即使迭代器返回不同数量的元素返回。
此方法相当于:
List<E> list = new ArrayList<E>(size());
for (E e : this)
list.add(e);
return list.toArray();
toArray
接口
Collection<E>
public <T> T[] toArray(T[] a)
如果集合符合指定数组中剩余的空间(即数组有比这更多的元素的集合),在阵列采集结束后立即的元素设置为null。(这是有用的在确定这个集合只有长度如果调用者知道集合不包含任何null元素。)
如果这个集合对命令它的迭代器返回的元素有什么样的保证,则该方法必须返回相同的顺序中的元素。
像Collection.toArray()
方法,该方法作为之间的桥梁,基于阵列和基于集合API。此外,该方法允许对输出数组的运行时类型的精确控制,并在某些情况下,可用于节省分配成本。
假设x是一个集合称为只包含字符串。下面的代码可以用来把收集到新分配的数组String:
字符串[] y = x.toarray(新弦[ 0 ]);注意 toArray(new Object[0])是相同的功能, toArray()。
此实现返回一个数组包含的所有元素的迭代器返回的集合在同一顺序,存储在数组中的元素连续,从指数0
。如果迭代器返回的元素数量太大,不适合在指定的数组中,那么元素返回在一个新分配的数组长度等于由迭代器返回的元素的数量,即使这个集合的大小在迭代过程中的变化,可能会发生,如果集合允许在迭代过程中的并发修改。的size
方法称为只是作为一个优化的暗示;正确的结果是即使迭代器返回不同数量的元素返回。
此方法相当于:
List<E> list = new ArrayList<E>(size());
for (E e : this)
list.add(e);
return list.toArray(a);
toArray
接口
Collection<E>
T
-数组的运行时类型包含集合
a
-为这个集合的元素被存储数组,如果它足够大;否则,一个新的运行时类型相同的数组分配给这个目的。
ArrayStoreException
-如果指定数组的运行时类型是不是一个超集合中每个元素运行时类型
NullPointerException
-如果指定的数组是空的
public boolean add(E e)
支持此操作的集合可能会将此集合中的元素添加到什么元素上的限制。特别是,一些集合拒绝加入null元素,和其他人将加入元素的类型限制。集合类应该在他们的文档中明确指定任何可能添加的元素的限制。
如果一个集合不添加其他比它已经包含元素的任何理由一个特定的元素,它必须抛出一个异常(而不是返回false)。这保持了一个集合总是包含指定元素的不变的,在此调用返回后。
这个实现总是抛出一个UnsupportedOperationException。
add
接口
Collection<E>
e
-集合中存在的元素来保证
UnsupportedOperationException
-如果
add操作不支持这个行业
ClassCastException
-如果指定元素类型阻止其加入收藏
NullPointerException
-如果指定元素为null,集合不允许null元素
IllegalArgumentException
-如果对元素的一些特性阻止其加入收藏
IllegalStateException
-如果元素不能被添加在这个时候由于插入的限制
public boolean remove(Object o)
实现:对集合进行遍历,查找指定元素。如果它找到元素,它将使用迭代器的删除方法从集合中移除元素。
请注意,此实现抛出一个UnsupportedOperationException如果迭代器iterator方法返回的集合的不落实remove方法和集合包含指定的对象。
remove
接口
Collection<E>
o
元要从集合中删除,如果存在
UnsupportedOperationException
-如果
remove操作不支持这个行业
ClassCastException
-如果指定元素的类型与集合不相容(
optional)
NullPointerException
-如果指定元素为null,集合不允许null元素(
optional)
public boolean containsAll(Collection<?> c)
对指定集合进行遍历,检查每个元素的迭代器返回的反过来看当前集合中是否包含。如果所有元素都包含true返回,否则false。
containsAll
接口
Collection<E>
c
采集被测试集合中是否包含
ClassCastException
-如果指定集合的一个或多个元素的类型与集合不相容(
optional)
NullPointerException
-如果指定集合包含一个或多个null元素和集合不允许null元素(
optional),或者指定集合为空。
contains(Object)
public boolean addAll(Collection<? extends E> c)
对指定集合进行遍历,添加每一个由迭代器返回的对象来此集合,反过来。
请注意,此实现将抛出一个UnsupportedOperationException除非add重写(假定指定集合非空)。
addAll
接口
Collection<E>
c
收集包含的元素被添加到这个集合
UnsupportedOperationException
-如果
addAll操作不支持这个行业
ClassCastException
-如果指定集合的一个元素类阻止其加入收藏
NullPointerException
-如果指定集合包含一个null元素和集合不允许null元素,或者指定集合为空
IllegalArgumentException
-如果指定集合的一个元素的一些特性阻止其加入收藏
IllegalStateException
-如果不是所有的元素都可以在这个时候加入由于插入的限制
add(Object)
public boolean removeAll(Collection<?> c)
这个实现遍历这个集合,检查返回的每个元素依次迭代器是否包含在指定的收集。如果这是包含的,它是从这个集合和迭代器的remove方法。
注意,这个实现会如果迭代器的iterator方法返回未实现remove方法和集合包含一个或多个元素共同指定集合的抛出一个UnsupportedOperationException。
removeAll
接口
Collection<E>
c
收集包含要从集合中删除的元素
UnsupportedOperationException
-如果
removeAll方法不支持这个行业
ClassCastException
-如果在这个集合的一个或多个元素的类型与指定集合不相容(
optional)
NullPointerException
-如果这个集合包含一个或多个null元素而指定集合不支持null元素(
optional),或者指定集合为空
remove(Object)
,
contains(Object)
public boolean retainAll(Collection<?> c)
这个实现遍历这个集合,检查返回的每个元素依次迭代器是否包含在指定的收集。如果不包含,删除它从这个集合和迭代器的remove方法。
注意,这个实现会如果迭代器的iterator方法返回未实现remove方法和集合包含指定集合中不存在一个或多个元素抛出UnsupportedOperationException。
retainAll
接口
Collection<E>
c
收集包含元素被保留在这个集合
UnsupportedOperationException
-如果
retainAll操作不支持这个行业
ClassCastException
-如果在这个集合的一个或多个元素的类型与指定集合不相容(
optional)
NullPointerException
-如果这个集合包含一个或多个null元素而指定集合不允许null元素(
optional),或者指定集合为空
remove(Object)
,
contains(Object)
public void clear()
这个实现遍历这个集合,使用Iterator.remove操作删除每一个元素。大多数实现可能会选择重写此方法以提高效率。
注意,这个实现会如果迭代器集合的iterator方法返回未实现remove方法和集合抛出UnsupportedOperationException非空。
clear
接口
Collection<E>
UnsupportedOperationException
-如果
clear操作不支持这个行业
public String toString()
String.valueOf(Object)
。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.