Известные косвенные подклассы FastElementSequence <T, U расширяет NdArray <T>>, SingleElementSequence <T, U расширяет NdArray <T>>, SlicingElementSequence <T, U расширяет NdArray <T>> |
Последовательность элементов N-мерного массива.
NdArraySequence
используется для перемещения по NdArray
в заданном измерении и посещения каждого из его элементов. Например, для матрицы nxm
по осям [x, y]
элементы повторяются в следующем порядке:
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
Публичные методы
абстрактный NdArraySequence <T> | asSlices () Возвращает каждый элемент как новый срез. |
абстрактная пустота | forEachIndexed (потребитель BiConsumer<long[], T>) Посетите каждый элемент этой итерации и их соответствующие координаты. |
Унаследованные методы
Публичные методы
общедоступный абстрактный NdArraySequence <T> asSlices ()
Возвращает каждый элемент как новый срез.
В отличие от обычных коллекций Java, элементы NdArraySequence
являются временными, т. е. для каждой итерации выделяются новые экземпляры NdArray
. Чтобы повысить производительность, один и тот же экземпляр можно повторно использовать для просмотра всех элементов этой последовательности с помощью DataBufferWindow
.
Однако в некоторых случаях может быть предпочтительнее отключить такую оптимизацию, чтобы гарантировать, что каждый возвращаемый элемент представляет собой новый фрагмент исходного массива. Например, если один или несколько посещенных элементов должны находиться за пределами итерации последовательности, asSlices()
гарантирует, что все элементы, возвращаемые последовательностью, являются уникальными экземплярами.
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
Возврат
- последовательность, которая возвращает каждый повторяемый элемент как новый срез
См. также
общедоступная абстрактная пустота forEachIndexed (потребитель BiConsumer<long[], T>)
Посетите каждый элемент этой итерации и их соответствующие координаты.
Важно: метод-потребитель не должен хранить ссылку на координаты, поскольку они могут быть изменяемыми и повторно использоваться во время итерации для повышения производительности.
Параметры
потребитель | метод для вызова для каждого элемента |
---|