A sequence recycling the same NdArray
instance when iterating its elements
Public Constructors
FastElementSequence(AbstractNdArray<T, U> ndArray, int dimensionIdx, U element, DataBufferWindow<?> elementWindow)
|
Public Methods
NdArraySequence<U> |
asSlices()
Returns each element as a new slice.
|
void |
forEachIndexed(BiConsumer<long[], U> consumer)
|
Iterator<U> |
iterator()
|
Inherited Methods
Public Constructors
public FastElementSequence (AbstractNdArray<T, U> ndArray, int dimensionIdx, U element, DataBufferWindow<?> elementWindow)
Public Methods
public NdArraySequence<U> asSlices ()
Returns each element as a new slice.
Unlike conventional Java collections, elements of a NdArraySequence
are transient, i.e. new NdArray
instances are allocated for each iteration. To improve performance, the same instance can be recycled to view
all elements of this sequence, using a DataBufferWindow
.
In some cases though, it might be preferable to disable such optimizations to ensure that each element returned is a
new slice of the original array. For example, if one or more elements visited must live beyond the scope of the sequence
iteration, asSlices()
makes sure that all elements returned by the sequence are unique instances.
final List<IntNdArray> vectors = new ArrayList<>();
IntNdArray matrix = NdArrays.ofInts(Shape.of(6, 6));
ndArray.elements(0).forEach(e -> vectors::add); // Not safe, as `e` might always be the same recycled instance
ndArray.elements(0).asSlices().forEach(e -> vectors::add); // Safe, each `e` is a distinct NdArray instance
Returns
- a sequence that returns each elements iterated as a new slice