Sự khác biệt duy nhất giữa hai là truyền đạt ý định của bạn.
Khi bạn viết val a = mutableListOf()
, bạn đang nói "Tôi muốn một danh sách có thể thay đổi và tôi không đặc biệt quan tâm đến việc triển khai". Thay vào đó, khi bạn viết, val a = ArrayList()
bạn đang nói "Tôi đặc biệt muốn một ArrayList
".
Trên thực tế, trong quá trình triển khai hiện tại của Kotlin biên dịch sang JVM, việc gọi mutableListOf
sẽ tạo ra ArrayList
và không có sự khác biệt về hành vi: một khi danh sách được tạo, mọi thứ sẽ hoạt động giống nhau.
Bây giờ, giả sử rằng một phiên bản tương lai của Kotlin thay đổi mutableListOf
để trả về một loại danh sách khác.
Dễ thấy hơn là không, nhóm Kotlin sẽ chỉ thực hiện thay đổi đó nếu họ nhận thấy việc triển khai mới hoạt động tốt hơn cho hầu hết các trường hợp sử dụng. mutableListOf
sau đó sẽ yêu cầu bạn sử dụng triển khai danh sách mới đó một cách minh bạch và bạn sẽ có được hành vi tốt hơn đó miễn phí. Đi với mutableListOf
nếu điều đó giống như trường hợp của bạn.
Mặt khác, có thể bạn đã dành nhiều thời gian để suy nghĩ về vấn đề của mình và nhận ra rằng đó ArrayList
thực sự là cách phù hợp nhất cho vấn đề của bạn và bạn không muốn mạo hiểm chuyển sang một thứ gì đó không tối ưu. Sau đó, bạn có thể muốn sử dụng ArrayList
trực tiếp hoặc sử dụng arrayListOf
chức năng gốc (một hàm ArrayList
tương tự cụ thể với mutableListOf
).
mutableListOf
cũngArrayList
là từ khóa trong Kotlin