Lập trình Kotlin - Collections

Collections trong Kotlin

Không giống như các ngôn ngữ lập trình khác, Kotlin phân biệt rõ 2 loại Collections(Mutable collections và Immutable collections).

Mô hình lớp kế thừa của các Collection trong Kotlin/java:

Mutable Collections là tập các lớp dùng để lưu trữ danh sách dữ liệu và có thể thay đổi kích thước được

Immutable Collections là tập các lớp dùng để lưu trữ danh sách dữ liệu và không thể thay đổi kích thước được

Cả 2 loại Collections này rất dễ tạo và sử dụng, chỉ khác nhau chút xíu ở mục đích sử dụng của lập trình viên.

Trong giới hạn bài học này Tui chỉ trình bày về MutableList và List, các lớp Collection khác các bạn tự tìm hiểu thêm nếu trong dự án có gặp. Tuy nhiên với MutableList và List thì theo Tui bạn đã có thể xử lý được hầu hết các trường hợp lưu trữ, tương tác, hiển thị dữ liệu trong phần mềm rồi.

MutableList Là collection có thể thay đổi kích thước dữ liệu: Có thể thêm, sửa, xóa…

List Là collection chỉ có nhiệm vụ readOnly, dùng để hiển thị thông tin. Và dĩ nhiên nó sẽ tối ưu bộ nhớ hơn so với MutableList. Do đó nếu như bạn chỉ muốn hiển thị thông tin thì nên dùng List.

Các collection trong Kotlin không có các Constructor khởi tạo riêng, mà nó thông qua các hàm mutableListOf(), listOf() để khởi tạo

Ví dụ 1 dưới đây mình họa cách khởi tạo 2 collections:

var ds1:MutableList =mutableListOf()
var ds2:List = listOf()

Ở trên 2 đối tượng ds1 và ds2 được khởi tạo với danh sách rỗng.

Ta có thể khởi tạo với một số dữ liệu ban đầu,

Ví dụ 2

var ds1:MutableList =mutableListOf(5,6,1,0,4)
var ds2:List = listOf(1,2,3,4)

Ở trên ds1 được khởi tạo mặc định với 5 phần tử và ta có thể thay đổi thông tin, kích thước ds1

ds2 được khởi tạo mặc định với 4 phần tử và ta không thể thay đổi thông tin, kích thước ds2. Khi ta dùng List tức là trong đầu ta muốn rằng nó là readOnly, chỉ hiển thị dữ liệu mà thôi.

Dưới đây là một số phương thức thường dùng với MutableList/List:

Tên Thuộc tính/phương thức Mô tả
size Thuộc tính trả về kích thước thực sự của Collection
[i] Indexer cho phép truy suất và thay đổi giá trị tại vị trí i của collection
add() Thêm một phần tử
addAll() Thêm nhiều phần tử
removeAt() Xóa theo vị trí
remove() Xóa theo đối tượng
removeIf{} Xóa theo điều kiện
clear() Xóa toàn bộ danh sách
sort() Sắp xếp tăng dần
sortDescending() Sắp xếp giảm dần
filter {  } Lọc dữ liệu
contains() Kiểm tra Collection có chứa phần tử nào đó hay không

Và còn nhiều các phương thức lợi hại khác, các bạn tự tìm hiểu thêm nhé.