Sottoclassi indirette conosciute FastElementSequence <T, U estende NdArray <T>>, SingleElementSequence <T, U estende NdArray <T>>, SlicingElementSequence <T, U estende NdArray <T>> |
Una sequenza di elementi di un array N-dimensionale.
Una NdArraySequence
viene utilizzata per attraversare un NdArray
in una determinata dimensione e visitare ciascuno dei suoi elementi. Ad esempio, data una matrice nxm
sugli assi [x, y]
, gli elementi vengono iterati nel seguente ordine:
x 0 y 0 , x 0 y 1 , ..., x 0 y m-1 , x 1 y 0 , x 1 y 1 , ..., x n-1 y m-1
Metodi pubblici
abstract NdArraySequence <T> | comeSlice () Restituisce ogni elemento come una nuova sezione. |
vuoto astratto | forEachIndexed (BiConsumer<long[], T> consumatore) Visita ogni elemento di questa iterazione e le rispettive coordinate. |
Metodi ereditati
Metodi pubblici
estratto pubblico NdArraySequence <T> asSlices ()
Restituisce ogni elemento come una nuova sezione.
A differenza delle raccolte Java convenzionali, gli elementi di una NdArraySequence
sono transitori, ovvero vengono allocate nuove istanze NdArray
per ogni iterazione. Per migliorare le prestazioni, la stessa istanza può essere riciclata per visualizzare tutti gli elementi di questa sequenza, utilizzando un DataBufferWindow
.
In alcuni casi, tuttavia, potrebbe essere preferibile disabilitare tali ottimizzazioni per garantire che ogni elemento restituito sia una nuova sezione dell'array originale. Ad esempio, se uno o più elementi visitati devono vivere oltre l'ambito dell'iterazione della sequenza, asSlices()
si assicura che tutti gli elementi restituiti dalla sequenza siano istanze univoche.
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
Ritorni
- una sequenza che restituisce ogni elemento ripetuto come una nuova sezione
Vedi anche
public abstract void forEachIndexed (BiConsumer<long[], T> consumatore)
Visita ogni elemento di questa iterazione e le rispettive coordinate.
Importante: il metodo consumer non dovrebbe mantenere un riferimento alle coordinate poiché potrebbero essere modificabili e riutilizzate durante l'iterazione per migliorare le prestazioni.
Parametri
consumatore | metodo da invocare per ogni elemento |
---|