Làm cách nào để thêm một mục vào ArrayList trong Kotlin?


Câu trả lời:


98

Đối với những người vừa mới di chuyển từ java, In Kotlin Listđược mặc định là bất biến và phiên bản có thể thay đổi của Danh sách được gọi MutableList.

Do đó, nếu bạn có một cái gì đó như:

val list: List<String> = ArrayList()

Trong trường hợp này, bạn sẽ không nhận được một add()phương thức vì danh sách là bất biến. Do đó, bạn sẽ phải khai báo MutableListnhư hình dưới đây:

val list: MutableList<String> = ArrayList()

Bây giờ bạn sẽ thấy một add()phương thức và bạn có thể thêm các phần tử vào bất kỳ danh sách nào.


5
Cảm ơn bạn! Tôi đã đập đầu tôi qua rằng phương pháp cộng trong Mảng ...
dasfima

1
Tốt, đúng là những gì tôi đang tìm kiếm. Cảm ơn bạn.
Sam Chen

Sự khác biệt sử dụng giữa val list: MutableList<String> = ArrayList()và là val list = mutableListOf<String>()gì?
Sam Chen

77

Nếu bạn có bộ sưu tập MUTABLE :

val list = mutableListOf(1, 2, 3)
list += 4

Nếu bạn có bộ sưu tập NGAY LẬP TỨC :

var list = listOf(1, 2, 3)
list += 4

lưu ý rằng tôi sử dụng valcho danh sách có thể thay đổi để nhấn mạnh rằng đối tượng luôn giống nhau, nhưng nội dung của nó thay đổi.

Trong trường hợp danh sách bất biến, bạn phải lập nó var. Một đối tượng mới được tạo bởi +=toán tử với giá trị bổ sung.


7
thực hiện +=trong danh sách không thể thay đổi, yêu cầu sao chép tất cả các phần tử của danh sách trong một danh sách có thể thay đổi mới và sau đó gán lại nó vào danh sách thực của bạn. Tôi không biết việc khai báo danh sách của bạn là phù hợp var. Dù sao, khai báo một danh sách một var không phải là một ý kiến ​​hay đối với tôi.
crgarridos

1
Nếu một danh sách là bất biến, bạn không có lựa chọn nào khác là khai báo danh sách đó var. Nếu một danh sách không thay đổi được khai báo là val, danh sách không thể thay đổi bao giờ. Chỉ cần gán lại nó cho một biến khác là có thể.
guenhter

1
Chính xác, tôi không muốn cho phép thay đổi tham chiếu của các biến của mình. nó có thể có tác dụng phụ trong các tác vụ bên ngoài / đồng thời. tốt hơn để tạo một bản sao để trích xuất logic. Nhưng điều này nằm ngoài phạm vi của câu hỏi.
crgarridos

24

Nếu bạn muốn sử dụng đặc biệt java ArrayList thì bạn có thể làm như sau:

fun initList(){
    val list: ArrayList<String> = ArrayList()
    list.add("text")
    println(list)
}

Nếu không, câu trả lời @guenhter là câu trả lời bạn đang tìm kiếm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.