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 mutableListOfsẽ tạo ra ArrayListvà 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. mutableListOfsau đó 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 mutableListOfnế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 ArrayListtrực tiếp hoặc sử dụng arrayListOfchức năng gốc (một hàm ArrayListtương tự cụ thể với mutableListOf).
     
              
mutableListOfcũngArrayListlà từ khóa trong Kotlin