FastElementSequence

lớp cuối cùng công khai FastElementSequence

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>

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

public void forEachIndexed (người tiêu dùng BiConsumer<long[], U>)

trình lặp công khai<U> trình vòng lặp ()