Một chuỗi tái chế cùng một phiên bản NdArray
khi lặp lại các phần tử của nó
Nhà xây dựng công cộng
FastElementSequence ( Tóm tắtNdArray <T, U> ndArray, int DimensionIdx, phần tử U, DataBufferWindow <?> elementWindow) |
Phương pháp công khai
Trình tự NdArray <U> | asSlices () Trả về mỗi phần tử dưới dạng một slice mới. |
trống rỗng | forEachIndexed (người tiêu dùng BiConsumer<long[], U>) |
Trình vòng lặp<U> | trình lặp () |
Phương pháp kế thừa
Nhà xây dựng công cộng
public FastElementSequence ( AbstractNdArray <T, U> ndArray, int DimensionIdx, phần tử U, DataBufferWindow <?> elementWindow)
Phương pháp công khai
công khai NdArraySequence <U> asSlices ()
Trả về mỗi phần tử dưới dạng một slice mới.
Không giống như các bộ sưu tập Java thông thường, các phần tử của NdArraySequence
là tạm thời, tức là các phiên bản NdArray
mới được phân bổ cho mỗi lần lặp. Để cải thiện hiệu suất, phiên bản tương tự có thể được tái chế để xem tất cả các phần tử của chuỗi này bằng cách sử dụng DataBufferWindow
.
Tuy nhiên, trong một số trường hợp, tốt nhất nên tắt các tối ưu hóa đó để đảm bảo rằng mỗi phần tử được trả về là một phần mới của mảng ban đầu. Ví dụ: nếu một hoặc nhiều phần tử được truy cập phải nằm ngoài phạm vi của phép lặp trình tự, thì asSlices()
đảm bảo rằng tất cả các phần tử được trình tự trả về đều là các phiên bản duy nhất.
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
Trả lại
- một chuỗi trả về từng phần tử được lặp lại dưới dạng một lát cắt mới