72 * not <em>late-binding</em> binds to the source of elements at the point of |
72 * not <em>late-binding</em> binds to the source of elements at the point of |
73 * construction or first invocation of any method. Modifications made to the |
73 * construction or first invocation of any method. Modifications made to the |
74 * source prior to binding are reflected when the Spliterator is traversed. |
74 * source prior to binding are reflected when the Spliterator is traversed. |
75 * After binding a Spliterator should, on a best-effort basis, throw |
75 * After binding a Spliterator should, on a best-effort basis, throw |
76 * {@link ConcurrentModificationException} if structural interference is |
76 * {@link ConcurrentModificationException} if structural interference is |
77 * detected. Spliterators that do this are called <em>fail-fast</em>. |
77 * detected. Spliterators that do this are called <em>fail-fast</em>. The |
|
78 * bulk traversal method ({@link #forEachRemaining forEachRemaining()}) of a |
|
79 * Spliterator may optimize traversal and check for structural interference |
|
80 * after all elements have been traversed, rather than checking per-element and |
|
81 * failing immediately. |
78 * |
82 * |
79 * <p>Spliterators can provide an estimate of the number of remaining elements |
83 * <p>Spliterators can provide an estimate of the number of remaining elements |
80 * via the {@link #estimateSize} method. Ideally, as reflected in characteristic |
84 * via the {@link #estimateSize} method. Ideally, as reflected in characteristic |
81 * {@link #SIZED}, this value corresponds exactly to the number of elements |
85 * {@link #SIZED}, this value corresponds exactly to the number of elements |
82 * that would be encountered in a successful traversal. However, even when not |
86 * that would be encountered in a successful traversal. However, even when not |