Interface Iterable<T>
方法详细信息:
iterator
返回类型为 T
元素的迭代器。
结果:一个迭代器
forEach
default void forEach(Consumer<? super T> action)
对Iterable
的每个元素执行给定的操作,直到所有元素都被处理或动作引发异常。 除非实现类另有规定,否则按照迭代的顺序执行操作(如果指定了迭代顺序)。 动作抛出的异常被转发给呼叫者。
实现要求:默认实现的行为如下:
for (T t : this) action.accept(t);
参数
action
- 要为每个元素执行的操作
异常
NullPointerException
- 如果指定的动作为空
spliterator
default Spliterator<T> spliterator()
在Iterable描述的元素上创建一个Iterable
。
实现要求:
默认实现从iterable的Iterator
创建一个early-binding拼接器。 Spliter继承了iterable的迭代器的fail-fast属性。
Implementation Note:
通常应该覆盖默认的实现。 由默认实现返回的分割器具有差的分割能力,未定义,并且不报告任何分割器特征。 实施课程几乎总能提供更好的实现。
结果
一个 Spliterator
在由此描述的元件 Iterable
。
Interface Collection<E>
参数类型
E
- 此集合中元素的类型
All Superinterfaces:
Iterable <E>
All Known Subinterfaces:
BeanContext , BeanContextServices , BlockingDeque <E>, BlockingQueue <E>, Deque <E>, List <E>, NavigableSet <E>, Queue <E>, Set <E>, SortedSet <E>, TransferQueue <E>
所有已知实现类:
AbstractCollection , AbstractList , AbstractQueue , AbstractSequentialList , AbstractSet , ArrayBlockingQueue , ArrayDeque , ArrayList , AttributeList , BeanContextServicesSupport , BeanContextSupport , ConcurrentHashMap.KeySetView , ConcurrentLinkedDeque , ConcurrentLinkedQueue , ConcurrentSkipListSet , CopyOnWriteArrayList , CopyOnWriteArraySet , DelayQueue , EnumSet , HashSet , JobStateReasons , LinkedBlockingDeque , LinkedBlockingQueue , LinkedHashSet , LinkedList , LinkedTransferQueue , PriorityBlockingQueue , PriorityQueue , RoleList , RoleUnresolvedList , Stack , SynchronousQueue , TreeSet , Vector
方法详细信息:
size
int size()
返回此集合中的元素数。 如果此收藏包含超过Integer.MAX_VALUE个元素,则返回Integer.MAX_VALUE 。
结果
此集合中的元素数
isEmpty
boolean isEmpty()
如果此集合不包含元素,则返回 true 。
结果
true如果此集合不包含元素
contains
boolean contains(Object o)
如果此集合包含指定的元素,则返回true 。 更正式地,返回true如果且仅当该集合至少包含一个元素e使得(o==null ? e==null : o.equals(e)) 。
参数
o
- 要在此集合中存在的元素要进行测试
结果
true如果此集合包含指定的元素
异常
ClassCastException
- 如果指定元素的类型与此集合不兼容( optional )
NullPointerException
- 如果指定的元素为空,并且此集合不允许空元素( optional )
iterator
Iterator<E> iterator()
返回此集合中的元素的迭代器。 没有关于元素返回顺序的保证(除非这个集合是提供保证的某个类的实例)。
Specified by:
结果
一个 Iterator在这个集合中的元素
toArray
Object[] toArray()
返回一个包含此集合中所有元素的数组。 如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。
返回的数组将是“安全的”,因为该集合不保留对它的引用。 (换句话说,这个方法必须分配一个新的数组,即使这个集合是由数组支持的)。 因此,调用者可以自由地修改返回的数组。
此方法充当基于阵列和基于集合的API之间的桥梁。
结果
一个包含此集合中所有元素的数组
toArray
<T> T[] toArray(T[] a)
返回包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。 如果集合适合指定的数组,则返回其中。 否则,将为指定数组的运行时类型和此集合的大小分配一个新数组。
如果此集合适合指定的数组,并具有剩余空间(即,该数组具有比此集合更多的元素),则紧跟在集合结束后的数组中的元素将设置为null 。 ( 仅当调用者知道此集合不包含任何null元素时,这才有助于确定此集合的长度。)
如果此集合对其迭代器返回的元素的顺序做出任何保证,则此方法必须以相同的顺序返回元素。
像toArray()
方法一样,此方法充当基于数组和基于集合的API之间的桥梁。 此外,该方法允许精确地控制输出阵列的运行时类型,并且在某些情况下可以用于节省分配成本。
假设x是一个已知只包含字符串的集合。 以下代码可用于将集合转储到新分配的数组中: String :
String[] y = x.toArray(new String[0]);
请注意, toArray(new Object[0])的功能与toArray()相同 。
参数类型
T
- 包含集合的数组的运行时类型
参数
a
- 要存储此集合的元素的数组,如果它足够大; 否则,为此目的分配相同运行时类型的新数组。
结果
一个包含此集合中所有元素的数组
异常
ArrayStoreException
- 如果指定数组的运行时类型不是此集合中每个元素的运行时类型的超类型
NullPointerException
- 如果指定的数组为空
add
boolean add(E e)
确保此集合包含指定的元素(可选操作)。 如果此集合由于调用而更改,则返回true 。 (如果此集合不允许重复,并且已包含指定的元素,则返回false。 )
支持此操作的集合可能会限制可能添加到此集合的元素。 特别是一些集合拒绝添加null种元素,和其他人将强加可添加元素的类型限制。 收集类应在其文档中明确说明可能添加哪些元素的限制。
如果一个集合拒绝添加一个特定的元素,除了它已经包含该元素之外,它必须抛出异常(而不是返回false )。 这保留了一个集合在此调用返回后始终包含指定元素的不变量。
参数
e
- 要确保在此集合中的存在的元素
结果
true如果此集合由于调用而更改
异常
UnsupportedOperationException
- 如果此 集合不支持add操作
ClassCastException
- 如果指定元素的类阻止将其添加到此集合
NullPointerException
- 如果指定的元素为空,并且该集合不允许空元素
IllegalArgumentException
- 如果元素的某些属性阻止其添加到此集合
IllegalStateException
- 如果由于插入限制,此时无法添加该元素
remove
boolean remove(Object o)
从该集合中删除指定元素的单个实例(如果存在)(可选操作)。 更正式地,删除元素e ,使得(o==null ? e==null : o.equals(e)) ,如果该集合包含一个或多个这样的元素。 如果此集合包含指定的元素(或等效地,如果此集合由于调用而更改),则返回true 。
参数
o
- 要从此集合中删除的元素(如果存在)
结果
true如果一个元素因此调用而被删除
异常
ClassCastException
- 如果指定元素的类型与此集合不兼容( optional )
NullPointerException
- 如果指定的元素为空,并且此集合不允许空元素( optional )
UnsupportedOperationException
- 如果此 集合不支持remove操作
containsAll
boolean containsAll(Collection<?> c)
如果此集合包含指定 集合中的所有元素,则返回true。
参数
c
- 要在此集合中检查遏制的集合
结果
true如果此集合包含指定集合中的所有元素
异常
ClassCastException
- 如果指定集合中的一个或多个元素的类型与此集合不兼容( optional )
NullPointerException
- 如果指定的集合包含一个或多个空元素,并且此集合不允许空元素( optional ),或者指定的集合为空。
另请参见:
addAll
boolean addAll(Collection<? extends E> c)
将指定集合中的所有元素添加到此集合(可选操作)。 如果在操作进行中修改了指定的集合,则此操作的行为是未定义的。 (这意味着如果指定的集合是此集合,此调用的行为是未定义的,并且此集合是非空的。)
参数
c
- 包含要添加到此集合的元素的集合
结果
true如果此收集因呼叫而更改
异常
UnsupportedOperationException
- 如果此 集合不支持addAll操作
ClassCastException
- 如果指定集合的元素的类阻止将其添加到此集合
NullPointerException
- 如果指定的集合包含一个空元素,并且此集合不允许空元素,或者如果指定的集合为空
IllegalArgumentException
- 如果指定集合的元素的某些属性阻止其添加到此集合
IllegalStateException
- 如果不是所有的元素可以在此时由于插入限制添加
另请参见:
removeAll
boolean removeAll(Collection<?> c)
删除指定集合中包含的所有此集合的元素(可选操作)。 此调用返回后,此集合将不包含与指定集合相同的元素。
参数
c
- 包含要从此集合中删除的元素的集合
结果
true如果此集合由于调用而更改
异常
UnsupportedOperationException
- 如果此 集合不支持 removeAll方法
ClassCastException
- 如果此集合中的一个或多个元素的类型与指定的集合不兼容( optional )
NullPointerException
- 如果此集合包含一个或多个空元素,并且指定的集合不支持空元素( optional ),或者如果指定的集合为空
另请参见:
remove(Object)
, contains(Object)
removeIf
default boolean removeIf(Predicate<? super E> filter)
删除满足给定谓词的此集合的所有元素。 在迭代或谓词中抛出的错误或运行时异常被转发给调用者。
实现要求:
默认实现使用其iterator()
遍历集合的所有元素。 使用Iterator.remove()
删除每个匹配元素。 如果集合的迭代器不支持删除,那么UnsupportedOperationException
将被抛出第一个匹配元素。
参数
filter
- 对要删除的元素返回 true
结果
true
如果有任何元素被删除
异常
NullPointerException
- 如果指定的过滤器为空
UnsupportedOperationException
- 如果元素无法从此集合中删除。 如果不能删除匹配的元素,或者一般来说,不支持删除,则实现可能会抛出此异常。
retainAll
boolean retainAll(Collection<?> c)
仅保留此集合中包含在指定集合中的元素(可选操作)。 换句话说,从该集合中删除所有不包含在指定集合中的元素。
参数
c
- 包含要保留在此集合中的元素的集合
结果
true如果此收集因呼叫而更改
异常
UnsupportedOperationException
- 如果此 集合不支持retainAll操作
ClassCastException
- 如果此集合中的一个或多个元素的类型与指定的集合不兼容( optional )
NullPointerException
- 如果此集合包含一个或多个空元素,并且指定的集合不允许空元素( optional ),或者如果指定的集合为空
另请参见:
remove(Object)
, contains(Object)
clear
void clear()
从此集合中删除所有元素(可选操作)。 此方法返回后,集合将为空。
异常
UnsupportedOperationException
- 如果此 集合不支持clear操作
equals
boolean equals(Object o)
将指定的对象与此集合进行比较以获得相等性。
虽然Collection接口不会增加规定向工程总承包为Object.equals,谁落实Collection接口程序员“直接”(换句话说,创建一个类,是Collection,但不是一个Set或List),如果必须小心谨慎,他们选择覆盖Object.equals 。 没有必要这样做,最简单的行动是依靠Object的实现,但实施者可能希望实现“价值比较”来代替默认的“参考比较”。 ( List和Set接口要求这样的价值比较。)
Object.equals方法的一般合同规定,等于必须是对称的(换句话说, a.equals(b)当且仅当b.equals(a) )。 List.equals和Set.equals的合同规定列表仅等于其他列表,并设置为其他集合。 因此,一个既不实现List也不实现Set接口的集合类的自定义equals方法必须返回false,当该集合与任何列表或集合进行比较时。 (通过相同的逻辑,不可能编写一个正确实现Set和List接口的类。)
重写:
参数
o
- 要与此集合相等的对象进行比较
结果
true如果指定的对象等于此集合
另请参见:
Object.equals(Object)
, Set.equals(Object)
, List.equals(Object)
hashCode
int hashCode()
返回此集合的哈希码值。 虽然Collection接口不会增加规定为Object.hashCode方法的常规协定,程序员应该注意的是,它覆盖Object.equals方法也必须重写Object.hashCode方法,以满足为Object.hashCode方法一般合同中的任何类。 特别是c1.equals(c2)意味着c1.hashCode()==c2.hashCode() 。
重写:
结果
该集合的哈希码值
另请参见:
Object.hashCode()
, Object.equals(Object)
spliterator
default Spliterator<E> spliterator()
创建一个Spliterator
在这个集合中的元素。 实现应该记录分配器报告的特征值。 如果拼接器报告Spliterator.SIZED
并且此集合不包含元素,则不需要报告此类特征值。
应该通过可以返回更高效的拼接器的子类覆盖默认实现。 为了保持stream()
和parallelStream()
}方法的预期懒惰行为,分频器应具有IMMUTABLE
或CONCURRENT
,或者为late-binding 。 如果这些都不实际,那么首要的类应该是描述绑定者所记录的绑定和结构性干扰的策略,并且应该覆盖stream()
和parallelStream()
方法以使用Supplier
的Supplier创建流,如下所示:
Stream<E> s = StreamSupport.stream(() -> spliterator(), spliteratorCharacteristics)
这些要求确保由stream()
和parallelStream()
方法生成的流将反映终端流操作启动时集合的内容。
Specified by:
spliterator
在界面 Iterable<E>
实现要求:
默认实现从集合的Iterator
创建一个late-binding拼接Iterator
。 分割器继承集合的迭代器的故障快速属性。
创建的Spliterator
报告Spliterator.SIZED
。
Implementation Note:
创建的Spliterator
另外报告Spliterator.SUBSIZED
。
如果spliterator涵盖任何元素,然后附加特性值的报表,超出的SIZED
和SUBSIZED
,不帮助客户控制,专业或简化计算。 但是,这样做可以使空集合能够共享使用一个不变的和空的Spliterator实例(参见Spliterators.emptySpliterator()
),并且允许客户端确定这样一个分割器是否不覆盖任何元素。
结果
一个 Spliterator
在这个集合中的元素
从以下版本开始:
1.8
stream
default Stream<E> stream()
返回一个顺序Stream
与此集合作为其来源。
当此方法应该重写spliterator()
方法不能返回spliterator是IMMUTABLE
, CONCURRENT
,或后期绑定 。 (详见spliterator()
)
实现要求:
默认的实现创建顺序 Stream
从收集的 Spliterator
。
结果
连续 Stream
在这个集合中的元素
从以下版本开始:
1.8
parallelStream
default Stream<E> parallelStream()
返回可能并行的Stream
与此集合作为其来源。 该方法允许返回顺序流。
当此方法应该重写spliterator()
方法不能返回spliterator是IMMUTABLE
, CONCURRENT
,或后期绑定 。 (详见spliterator()
)
实现要求:
默认的实现创建了一个平行 Stream
从收集的 Spliterator
。
结果
一个可能平行 Stream
移到该集合中的元素
Interface List<E>
参数类型
E
- 此列表中元素的类型
All Superinterfaces:
Collection <E>, Iterable <E>
所有已知实现类:
AbstractList , AbstractSequentialList , ArrayList , AttributeList , CopyOnWriteArrayList , LinkedList , RoleList , RoleUnresolvedList , Stack , Vector
方法详细信息
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:
结果
在这个列表中的元素以适当的顺序迭代
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)
将指定的元素追加到此列表的末尾(可选操作)。
支持此操作的列表可能会限制可能添加到此列表中的元素。 特别地,一些列表将拒绝添加null元素,而其他列表将对可能添加的元素的类型施加限制。 列表类应在其文档中明确指定可能添加哪些元素的限制。
Specified by:
add
在接口 Collection<E>
参数
e
- 要附加到此列表的元素
结果
true (由 Collection.add(E)
规定 )
异常
UnsupportedOperationException
-如果 add操作不受此列表支持
ClassCastException
- 如果指定元素的类阻止将其添加到此列表中
NullPointerException
- 如果指定的元素为空,并且该列表不允许空元素
IllegalArgumentException
- 如果此元素的某些属性阻止将其添加到此列表
remove
boolean remove(Object o)
从列表中删除指定元素的第一个出现(如果存在)(可选操作)。 如果此列表不包含该元素,则它将保持不变。 更正式地,删除具有最低索引i的元素,使得(o==null ? get(i)==null : o.equals(get(i))) (如果这样的元素存在)。 如果此列表包含指定的元素(或等效地,如果此列表作为调用的结果而更改),则返回true 。
Specified by:
remove
在接口 Collection<E>
参数
o
- 要从此列表中删除的元素(如果存在)
结果
true如果此列表包含指定的元素
异常
ClassCastException
- 如果指定元素的类型与此列表不兼容( optional )
NullPointerException
- 如果指定的元素为空,并且该列表不允许空元素( optional )
UnsupportedOperationException
-如果 remove操作不受此列表支持
containsAll
boolean containsAll(Collection<?> c)
如果此列表包含指定 集合的所有元素,则返回true。
Specified by:
containsAll
在接口 Collection<E>
参数
c
- 要在此列表中检查遏制的集合
结果
true如果此列表包含指定集合的所有元素
异常
ClassCastException
- 如果指定集合中的一个或多个元素的类型与此列表不兼容( optional )
NullPointerException
- 如果指定的集合包含一个或多个空元素,并且该列表不允许空元素( optional ),或者如果指定的集合为空
另请参见:
addAll
boolean addAll(Collection<? extends E> c)
按指定集合的迭代器(可选操作)返回的顺序将指定集合中的所有元素附加到此列表的末尾。 如果在操作进行中修改了指定的集合,则此操作的行为是未定义的。 (注意,如果指定的集合是此列表,并且它是非空的,则会发生这种情况。)
Specified by:
addAll
在界面 Collection<E>
参数
c
- 包含要添加到此列表的元素的集合
结果
true如果此列表因呼叫而更改
异常
UnsupportedOperationException
-如果 addAll操作不受此列表支持
ClassCastException
- 如果指定集合的元素的类阻止将其添加到此列表
NullPointerException
- 如果指定的集合包含一个或多个空元素,并且该列表不允许空元素,或者如果指定的集合为空
IllegalArgumentException
- 如果指定集合的元素的某些属性阻止其添加到此列表
另请参见:
addAll
boolean addAll(int index, Collection<? extends E> c)
将指定集合中的所有元素插入到此列表中的指定位置(可选操作)。 将当前位于该位置(如果有的话)的元素和随后的任何元素移动到右边(增加其索引)。 新元素将按照指定集合的迭代器返回的顺序显示在此列表中。 如果在操作进行中修改了指定的集合,则此操作的行为是未定义的。 (注意,如果指定的集合是此列表,并且它是非空的,则会发生这种情况。)
参数
index
- 从指定集合插入第一个元素的索引
c
- 包含要添加到此列表的元素的集合
结果
true如果此列表因呼叫而更改
异常
UnsupportedOperationException
-如果 addAll操作不受此列表支持
ClassCastException
- 如果指定集合的元素的类阻止将其添加到此列表
NullPointerException
- 如果指定的集合包含一个或多个空元素,并且该列表不允许空元素,或者如果指定的集合为空
IllegalArgumentException
- 如果指定集合的元素的某些属性阻止其添加到此列表中
IndexOutOfBoundsException
- 如果索引超出范围( index < 0 || index > size() )
removeAll
boolean removeAll(Collection<?> c)
从此列表中删除包含在指定集合中的所有元素(可选操作)。
Specified by:
removeAll
在接口 Collection<E>
参数
c
- 包含要从此列表中删除的元素的集合
结果
true如果此列表因呼叫而更改
异常
UnsupportedOperationException
-如果 removeAll操作不受此列表支持
ClassCastException
- 如果此列表的元素的类与指定的集合不兼容( optional )
NullPointerException
- 如果此列表包含空元素,并且指定的集合不允许空元素( optional ),或者如果指定的集合为空
另请参见:
remove(Object)
, contains(Object)
retainAll
boolean retainAll(Collection<?> c)
仅保留此列表中包含在指定集合中的元素(可选操作)。 换句话说,从此列表中删除其中不包含在指定集合中的所有元素。
Specified by:
retainAll
在接口 Collection<E>
参数
c
- 包含要保留在此列表中的元素的集合
结果
true如果此列表因呼叫而更改
异常
UnsupportedOperationException
-如果 retainAll操作不受此列表支持
ClassCastException
- 如果此列表的元素的类与指定的集合不兼容( optional )
NullPointerException
- 如果此列表包含空元素,并且指定的集合不允许空元素( optional ),或者如果指定的集合为空
另请参见:
remove(Object)
, contains(Object)
replaceAll
default void replaceAll(UnaryOperator<E> operator)
将该列表的每个元素替换为将该运算符应用于该元素的结果。 运营商抛出的错误或运行时异常被转发给呼叫者。
实现要求:
默认实现相当于,对于这个list
:
final ListIterator<E> li = list.listIterator(); while (li.hasNext()) { li.set(operator.apply(li.next())); }
如果列表的列表迭代器不支持set
操作那么UnsupportedOperationException
将替换第一个元素时抛出。
参数
operator
- 操作员应用于每个元素
异常
UnsupportedOperationException
- 如果此列表不可修改。 如果不能替换元素,或者一般来说,修改不被支持,则实现可能会抛出此异常
NullPointerException
- 如果指定的运算符为空,或者运算符结果为空值,并且该列表不允许空元素( optional )
从以下版本开始:
1.8
sort
default void sort(Comparator<? super E> c)
使用附带的 Comparator
排序此列表来比较元素。
实现要求:
默认实现相当于,对于这个list
:
Collections.sort(list, c)
参数
c
- 用于比较列表元素的Comparator
。 null
值表示应使用元素' natural ordering '
异常
ClassCastException
- 如果列表包含使用指定比较器不 相互比较的元素
UnsupportedOperationException
- 如果列表的list-iterator不支持 set
操作
IllegalArgumentException
- ( optional )如果比较方发现违反Comparator
合同
从以下版本开始:
1.8
clear
void clear()
从此列表中删除所有元素(可选操作)。 此呼叫返回后,列表将为空。
Specified by:
clear
在接口 Collection<E>
异常
UnsupportedOperationException
-如果 clear操作不受此列表支持
equals
boolean equals(Object o)
将指定的对象与此列表进行比较以获得相等性。 返回true当且仅当指定的对象也是列表时,两个列表都具有相同的大小,并且两个列表中所有相应的元素对相等 。 (如果(e1==null ? e2==null : e1.equals(e2)),两个元素e1和e2 相等 。)换句话说,如果两个列表以相同的顺序包含相同的元素,则它们被定义为相等。 此定义可确保equals方法在List接口的不同实现中正常工作。
Specified by:
equals
在界面 Collection<E>
重写:
参数
o
- 要与此列表相等的对象进行比较
结果
true如果指定的对象等于此列表
另请参见:
hashCode
int hashCode()
返回此列表的哈希码值。 列表的哈希码被定义为以下计算的结果:
int hashCode = 1; for (E e : list) hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
这确保list1.equals(list2)意味着list1.hashCode()==list2.hashCode()对于任何两个列表, list1和list2 ,根据Object.hashCode()
的一般合同的要求 。
Specified by:
hashCode
在接口 Collection<E>
重写:
结果
该列表的哈希码值
另请参见:
Object.equals(Object)
, equals(Object)
get
E get(int index)
返回此列表中指定位置的元素。
参数
index
- 要返回的元素的索引
结果
该列表中指定位置的元素
异常
IndexOutOfBoundsException
- 如果索引超出范围( index < 0 || index >= size() )
set
E set(int index, E element)
用指定的元素(可选操作)替换此列表中指定位置的元素。
参数
index
- 要替换的元素的索引
element
- 要存储在指定位置的元素
结果
该元素以前在指定的位置
异常
UnsupportedOperationException
-如果 set操作不受此列表支持
ClassCastException
- 如果指定元素的类阻止将其添加到此列表中
NullPointerException
- 如果指定的元素为空,并且该列表不允许空元素
IllegalArgumentException
- 如果指定元素的某些属性阻止将其添加到此列表中
IndexOutOfBoundsException
- 如果指数超出范围( index < 0 || index >= size() )
add
void add(int index, E element)
将指定的元素插入此列表中的指定位置(可选操作)。 将当前位于该位置的元素(如果有)和任何后续元素(向其索引添加一个)移动。
参数
index
- 要插入指定元素的索引
element
- 要插入的元素
异常
UnsupportedOperationException
-如果 add操作不受此列表支持
ClassCastException
- 如果指定元素的类阻止将其添加到此列表中
NullPointerException
- 如果指定的元素为空,并且该列表不允许空元素
IllegalArgumentException
- 如果指定元素的某些属性阻止其添加到此列表中
IndexOutOfBoundsException
- 如果指数超出范围( index < 0 || index > size() )
remove
E remove(int index)
删除该列表中指定位置的元素(可选操作)。 将任何后续元素移动到左侧(从其索引中减去一个元素)。 返回从列表中删除的元素。
参数
index
- 要删除的元素的索引
结果
该元素以前在指定的位置
异常
UnsupportedOperationException
-如果 remove操作不受此列表支持
IndexOutOfBoundsException
- 如果索引超出范围( index < 0 || index >= size() )
indexOf
int indexOf(Object o)
返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。 更正式地,返回最低指数i ,使(o==null ? get(i)==null : o.equals(get(i))) ,或-1如果没有这样的指数。
参数
o
- 要搜索的元素
结果
此列表中指定元素的首次出现的索引,如果此列表不包含元素,则为-1
异常
ClassCastException
- 如果指定元素的类型与此列表不兼容( optional )
NullPointerException
- 如果指定的元素为空,并且此列表不允许空元素( optional )
lastIndexOf
int lastIndexOf(Object o)
返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。 更正式地,返回最高指数i使得(o==null ? get(i)==null : o.equals(get(i))) ,或-1如果没有这样的索引。
参数
o
- 要搜索的元素
结果
此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则为-1
异常
ClassCastException
- 如果指定元素的类型与此列表不兼容( optional )
NullPointerException
- 如果指定的元素为空,并且该列表不允许空元素( optional )
listIterator
ListIterator<E> listIterator()
返回列表中的列表迭代器(按适当的顺序)。
结果
在列表中的元素的列表迭代器(按适当的顺序)
listIterator
ListIterator<E> listIterator(int index)
从列表中的指定位置开始,返回列表中的元素(按正确顺序)的列表迭代器。 指定的索引表示初始调用将返回的第一个元素为next
。 初始调用previous
将返回指定索引减1的元素。
参数
index
- 要从列表迭代器返回的第一个元素的索引(通过调用 next
)
结果
在列表中的元素(按正确顺序)的列表迭代器,从列表中的指定位置开始
异常
IndexOutOfBoundsException
- 如果索引超出范围( index < 0 || index > size()
)
subList
List<E> subList(int fromIndex, int toIndex)
返回列表中指定的fromIndex (含)和toIndex之间的部分视图。 (如果fromIndex和toIndex相等,返回的列表为空。)返回的列表由此列表支持,因此返回列表中的非结构性更改将反映在此列表中,反之亦然。 返回的列表支持此列表支持的所有可选列表操作。
该方法消除了对显式范围操作(对于数组通常存在的排序)的需要。 任何期望列表的操作都可以通过传递一个子列表视图而不是整个列表来用作范围操作。 例如,以下成语从列表中移除了一系列元素:
list.subList(from, to).clear();
可以为indexOf和lastIndexOf构造类似的成语,并且Collections类中的所有算法都可以应用于子列表 。
如果支持列表(即,此列表)以除了通过返回的列表之外的任何方式进行结构修改 ,则此方法返回的列表的语义将变得未定义。 (结构修改是那些改变此列表的大小,或以其他方式扰乱它,使得正在进行的迭代可能产生不正确的结果)。
参数
fromIndex
- fromIndex
低端点(含)
toIndex
- toIndex
高端点(排他)
结果
该列表中指定范围的视图
异常
IndexOutOfBoundsException
- 对于非法端点索引值( fromIndex < 0 || toIndex > size || fromIndex > toIndex )
spliterator
default Spliterator<E> spliterator()
在此列表中的元素上创建一个Spliterator
。
Spliterator
报告Spliterator.SIZED
和Spliterator.ORDERED
。 实施应记录其他特征值的报告。
Specified by:
spliterator
在界面 Collection<E>
Specified by:
spliterator
在接口 Iterable<E>
实现要求:
默认实现从列表的Iterator
创建一个late-binding拼接Iterator
。 分割器继承列表迭代器的故障快速属性。
Implementation Note:
创建的 Spliterator
另外报告 Spliterator.SUBSIZED
。
结果
一个 Spliterator
在这个列表中的元素
从以下版本开始:
1.8