Mảng và các hàm xử lý mảng trong Kotlin

22/09/2022 - lượt xem
Chia sẻ
 
Rate this post

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.

Array – mảng là gì?

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

  • Các phần từ trong mảng được lưu trữ ở các vị trí bộ nhớ liền nhau.
  • Các phần tử trong mảng có thể truy cập thông qua chỉ mục của chúng ([0], [1]…)
  • Các phần tử trong mảng có thẻ thay đổi
  • Kích thước của mảng là cố định

Khởi tạo mảng – Array trong Kotlin

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.

Khởi tạo mảng bằng cách sử dụng hàm arrayOf ()

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

Tạo mảng sử dụng hàm khởi tạo Array

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ố:

  1. Kích thước của mảng
  2. Một hàm chấp nhận chỉ mục của một phần tử đã cho và trả về giá trị ban đầu của phần tử đó.
 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)

Truy cập và chỉnh sửa mảng Kotlin

Chúng ta cũng có 2 cách để truy cập và chỉnh sửa mảng trong Kotlin

Sử dụng phương thức get() và set()

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.

Sử dụng toán tử []

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 ().

Duyệt mảng với chỉ số trong Kotlin sử dụng vòng lặp

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

Tổng kết

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…

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm