Java 11
toArray
Phương thức mặc định mới trong Collection
giao diện cho phép các phần tử của bộ sưu tập được chuyển đến một mảng mới được tạo của kiểu thời gian chạy mong muốn. Nó mất IntFunction<T[]> generator
như là đối số và có thể được sử dụng như:
String[] array = set.toArray(String[]::new);
Đã có một phương pháp tương tự Collection.toArray(T[])
và bổ sung này có nghĩa là chúng tôi không còn có thể vượt quanull
thành đối số vì trong trường hợp đó, tham chiếu đến phương thức sẽ không rõ ràng. Nhưng vẫn ổn vì cả hai phương pháp đều ném NPE.
Java 8
Trong Java 8, chúng ta có thể sử dụng API luồng:
String[] array = set.stream().toArray(String[]::new);
Chúng tôi cũng có thể sử dụng phiên bản quá tải của toArray () có IntFunction<A[]> generator
dạng:
String[] array = set.stream().toArray(n -> new String[n]);
Mục đích của hàm tạo ở đây là lấy một số nguyên (kích thước của mảng mong muốn) và tạo ra một mảng có kích thước mong muốn. Cá nhân tôi thích cách tiếp cận trước đây bằng cách sử dụng tham chiếu phương thức hơn phương pháp sau sử dụng biểu thức lambda.
toArray()
phương thức được đề cập rõ ràng trong Javadoc.