Java 11
toArrayPhương thức mặc định mới trong Collectiongiao 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[]> generatornhư 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[]> generatordạ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.