Subclasses indiretas conhecidas FastElementSequence <T, U estende NdArray <T>>, SingleElementSequence <T, U estende NdArray <T>>, SlicingElementSequence <T, U estende NdArray <T>> |
Uma sequência de elementos de uma matriz N-dimensional.
Um NdArraySequence
é usado para percorrer um NdArray
em uma determinada dimensão e visitar cada um de seus elementos. Por exemplo, dada uma matriz nxm
nos eixos [x, y]
, os elementos são iterados na seguinte ordem:
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
Métodos Públicos
abstrato NdArraySequence <T> | asSlices () Retorna cada elemento como uma nova fatia. |
vazio abstrato | forEachIndexed (BiConsumer <long [], T> consumidor) Visite cada elemento desta iteração e suas respectivas coordenadas. |
Métodos herdados
Métodos Públicos
public abstract NdArraySequence <T> asSlices ()
Retorna cada elemento como uma nova fatia.
Ao contrário das coleções Java convencionais, os elementos de um NdArraySequence
são transitórios, ou seja, novas instâncias de NdArray
são alocadas para cada iteração. Para melhorar o desempenho, a mesma instância pode ser reciclada para visualizar todos os elementos desta sequência, usando um DataBufferWindow
.
Em alguns casos, porém, pode ser preferível desativar essas otimizações para garantir que cada elemento retornado seja uma nova fatia da matriz original. Por exemplo, se um ou mais elementos visitados devem viver além do escopo da iteração da sequência, asSlices()
garante que todos os elementos retornados pela sequência sejam instâncias únicas.
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
Devoluções
- uma sequência que retorna cada elemento iterado como uma nova fatia
Veja também
public abstract void forEachIndexed (BiConsumer <long [], T> consumidor)
Visite cada elemento desta iteração e suas respectivas coordenadas.
Importante: o método do consumidor não deve manter uma referência às coordenadas, pois elas podem ser mutáveis e reutilizadas durante a iteração para melhorar o desempenho.
Parâmetros
consumidor | método para invocar para cada elemento |
---|