Array là một trong những cấu trúc dữ liệu cơ bản nhất và gần như tất cả các ngôn ngữ lập trình hiện nay đều hỗ trợ. Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu về Array – mảng trong Kotlin cũng như một số hàm xử lý mảng cơ bản trong Kotlin.
Trong bài viết trước Codetutam cũng giới thiệu về các hàm xử lý chuỗi trong Kotlin, các bạn có thể tìm đọc thêm.
Tư tưởng đằng sau một mảng là lưu trữ nhiều mục có cùng kiểu dữ liệu, chẳng hạn như một số nguyên hoặc chuỗi dưới một tên biến duy nhất.
Mảng được sử dụng để tổ chức dữ liệu trong lập trình để một bộ giá trị liên quan có thể được sắp xếp hoặc tìm kiếm dễ dàng.
Các thuộc tính của mảng như sau
Trong Kotlin, mảng không phải là một kiểu dữ liệu gốc, thay vào đó, đây là một tập hợp các phần tử tương tự nhau có thể thay đổi được đại diện bởi lớp Array. Có hai cách để xác định một mảng trong Kotlin.
Chúng ta có thể sử dụng hàm thư viện arrayOf () để tạo một mảng bằng cách truyền giá trị của các phần tử cho hàm.
val num = arrayOf(1, 2, 3, 4) //implicit type declaration val num = arrayOf<Int>(1, 2, 3) //explicit type declaration
Tạo mảng trong Kotlin sử dụng các hàm arrayOf () và arrayOf <Int> để tạo mảng Int
fun main() { // declaring an array using arrayOf() val arrayname = arrayOf(1, 2, 3, 4, 5) for (i in 0..arrayname.size-1) { print(" "+arrayname[i]) } println() // declaring an array using arrayOf<Int> val arrayname2 = arrayOf<Int>(10, 20, 30, 40, 50) for (i in 0..arrayname2.size-1) { print(" "+arrayname2[i]) } }
//Kết quả 1 2 3 4 5 10 20 30 40 50
Vì Array là một lớp trong Kotlin, chúng ta cũng có thể sử dụng phương thức khởi tạo Array để tạo một mảng. Hàm tạo nhận hai tham số:
val num = Array(3, {i-> i*1})
Trong ví dụ trên, chúng ta chuyển kích thước của mảng là 3 và biểu thức lambda khởi tạo các giá trị phần tử từ 0 đến 9.
fun main() { val arrayname = Array(5, { i -> i * 1 }) for (i in 0..arrayname.size-1) { println(arrayname[i]) } }
//kết quả 0 1 2 3 4
Ngoài ra, Kotlin cũng có một số phương thức tích hợp sẵn để tạo các mảng kiểu dữ liệu nguyên thủy, chẳng hạn như byteArray, intArray, shortArray, v.v.
Các lớp này không kết thừa class Array, tuy nhiên, chúng thực hiện các phương thức và thuộc tính giống nhau.
val num = intArrayOf(1, 2, 3, 4)
Chúng ta cũng có 2 cách để truy cập và chỉnh sửa mảng trong Kotlin
Như đã trình bày, một mảng trong Kotlin về cơ bản là một lớp. Do đó, chúng ta có thể truy cập dữ liệu của một đối tượng lớp thông qua các hàm thành viên của nó. Các hàm get () và set () được cho là các hàm thành viên.
Phương thức get () nhận một tham số duy nhất — chỉ số của phần tử và trả về giá trị của mục tại chỉ mục đó.
val x = num.get(0)
Phương thức set () nhận 2 tham số: chỉ số của phần tử và giá trị được chèn vào.
num.set(1, 3)
Đoạn code trên đặt giá trị của phần tử thứ hai (với index là 1) trong mảng thành 3.
Toán tử [] có thể được sử dụng để truy cập và thay đổi các phần tử trong mảng. Để truy cập một phần tử mảng, cú pháp sẽ là:
val x = num[1]
Để gán giá trị cho một phần tử trong 1 mảng ta sử dụng như sau
num[2] = 5;
Điều này sẽ thay đổi giá trị của phần tử thứ ba trong mảng num thành 5.
Chú ý: Thực tế thì, toán tử chỉ mục hoặc [] thực sự là nạp chồng toán tử, nghĩa là nó là viết tắt của các lệnh gọi đến các hàm thành viên get () và set ().
Một ưu điểm quan trọng của mảng là có thể duyệt qua mảng và mỗi phần tử trong mảng có thể được thao tác riêng lẻ. Kotlin hỗ trợ một số cách mạnh mẽ để duyệt mảng.
Cách đơn giản nhất là sử dụng vòng lặp for để duyệt mảng
for(i in num.indices){ println(num[i]) }
// Traversing an array fun main() { val num = arrayOf<Int>(1, 2, 3, 4, 5) num.set(0, 10) num.set(1, 6) for (i in num.indices) { println(num[i]) } }
//kết quả 10 6 3 4 5
Ngoài ra, chúng ta có thể sử dụng range như một cách thay thế. Trong Kotlin, một range là một khoảng giữa hai giá trị (bắt đầu và kết thúc) và có thể được tạo bằng cách sử dụng toán tử (..). Sau đó, việc duyệt qua range có thể được thực hiện bằng cách sử dụng từ khóa in.
for (i in 0..10){ println(i) }
// Traversing an array fun main() { val arrayname = arrayOf<Int>(1, 2, 3, 4, 5) for (i in 0..arrayname.size-1) { println(arrayname[i]) } }
//kết quả 1 2 3 4 5
Một cách khác, bạn có thể sử dụng foreach để duyệt mảng.
arrayname.forEach({index->println(index)})
// Traversing an array fun main() { val arrayname = arrayOf<Int>(1, 2, 3, 4, 5) arrayname.forEach({ index -> println(index) }) }
//kết quả 1 2 3 4 5
Trong bài viết này CodeTuTam hướng dẫn các bạn tìm hiểu về Array (Mảng) trong Kotlin. Hi vọng với bài viết này bạn sẽ có những bước đi đầu tiên làm việc với mảng trong Kotlin. Nếu bạn thấy bài viết hay và có ích đừng quên like và chia sẻ bài viết bạn nhé!
Nếu quá nhàm chán với các kiến thức bản, hãy tham khảo bài hướng dẫn viết tool spam sms Android để làm một app nho nhỏ mà ứng dụng cao bạn nhé. Nhiều ứng dụng cho việc này ví dụ như tự động gửi tin nhắn, đặt lịch gửi tin nhắn hay là đặt báo thức chả hạn…
Bình luận: