Masukkan Password
43 The Complete Kotlin Course #42 - Accessing Elements - Kotlin Tutorials for Beginners
Materi ini melanjutkan pembahasan Array dan List, tetapi sekarang fokusnya adalah:
Bagaimana cara mengambil atau mengecek isi Array/List?
Sebelumnya kita sudah belajar cara membuatnya:
val numbers = arrayOf(10, 20, 30)
atau:
val numbers = mutableListOf(10, 20, 30)
Sekarang pertanyaannya:
Bagaimana cara mengetahui apakah List kosong? Berapa jumlah elemennya? Apa elemen pertama? Apa elemen terakhir? Bagaimana mengambil elemen berdasarkan posisi?
Nah, itu yang dibahas di video ini.
1. Array dan List punya banyak property dan method
Ketika kita memiliki List:
val players = mutableListOf("Budi", "Andi")
kita bisa menggunakan:
players.
Kemudian IDE akan menampilkan banyak property dan method.
Contohnya:
add()
remove()
set()
size
isEmpty()
first()
last()
dan lain-lain
Masing-masing memiliki fungsi yang berbeda.
Secara sederhana:
players
│
├── size
├── isEmpty()
├── first()
├── last()
├── add()
├── remove()
└── ...
Kita akan membahas beberapa yang ada di video.
2. Contoh kasus: game kartu
Transcript menggunakan contoh game.
Bayangkan kita sedang membuat game kartu yang dimainkan oleh beberapa pemain.
Kita ingin menyimpan nama pemain:
val players = mutableListOf("Budi", "Andi")
Kenapa menggunakan MutableList?
Karena pemain bisa:
- masuk ke game
- keluar dari game
- ditambahkan
- dihapus
Misalnya awalnya:
[Budi, Andi]
Pemain baru masuk:
players.add("Citra")
Sekarang:
[Budi, Andi, Citra]
Pemain keluar:
players.remove("Andi")
Sekarang:
[Budi, Citra]
Karena isi List dapat berubah, MutableList cocok untuk kasus ini.
3. isEmpty(): apakah List kosong?
Method pertama yang dibahas adalah:
isEmpty()
Fungsinya sangat sederhana:
Mengecek apakah List tidak memiliki elemen.
Contoh:
val players = mutableListOf("Budi", "Andi")
println(players.isEmpty())
Hasil:
false
Kenapa false?
Karena List berisi:
[Budi, Andi]
Artinya List tidak kosong.
4. isEmpty() menghasilkan Boolean
isEmpty() menghasilkan tipe:
Boolean
Boolean hanya mempunyai dua kemungkinan:
true
false
Jadi:
players.isEmpty()
bisa menghasilkan:
true
atau:
false
Kalau List kosong:
val players = mutableListOf<String>()
println(players.isEmpty())
Hasil:
true
Karena:
[]
memang kosong.
Kalau List berisi data:
val players = mutableListOf("Budi", "Andi")
println(players.isEmpty())
Hasil:
false
Karena:
[Budi, Andi]
tidak kosong.
5. Analogi isEmpty()
Bayangkan kamu punya sebuah ruangan.
Ruangan A:
┌──────────────┐
│ │
│ │
└──────────────┘
Tidak ada orang.
Maka:
isEmpty() → true
Kalau ada orang:
┌──────────────┐
│ Budi Andi │
│ │
└──────────────┘
Maka:
isEmpty() → false
Jadi gampangnya:
isEmpty()= “Apakah kosong?”
6. Contoh isEmpty() dengan if
Karena hasilnya Boolean, kita bisa menggunakannya dalam if.
val players = mutableListOf<String>()
if (players.isEmpty()) {
println("Belum ada pemain")
}
Output:
Belum ada pemain
Kalau ada pemain:
val players = mutableListOf("Budi", "Andi")
if (players.isEmpty()) {
println("Belum ada pemain")
} else {
println("Sudah ada pemain")
}
Output:
Sudah ada pemain
7. size: berapa jumlah elemen?
Property berikutnya adalah:
size
Perhatikan:
players.size
bukan:
players.size()
Kenapa?
Karena size adalah property, bukan method.
Contoh:
val players = mutableListOf("Budi", "Andi")
println(players.size)
Hasil:
2
Karena ada dua elemen:
Index Value
0 Budi
1 Andi
8. Bedakan Property dan Method
Ini penting.
Property
Biasanya kita mengaksesnya tanpa ():
players.size
Method
Biasanya dipanggil dengan ():
players.isEmpty()
players.first()
players.last()
Jadi:
size
↓
property
isEmpty()
first()
last()
↓
method/function
Walaupun dalam penggunaan sehari-hari kamu cukup fokus pada cara memakainya.
9. size sangat berguna untuk mengecek jumlah data
Misalnya game membutuhkan minimal 2 pemain.
Kita bisa:
val players = mutableListOf("Budi", "Andi")
if (players.size >= 2) {
println("Game bisa dimulai")
}
Karena:
players.size = 2
maka:
2 >= 2
adalah:
true
Jadi game bisa dimulai.
10. Kalau pemain hanya satu?
val players = mutableListOf("Budi")
Maka:
players.size
menghasilkan:
1
Kalau kita cek:
if (players.size >= 2) {
println("Game bisa dimulai")
} else {
println("Pemain belum cukup")
}
Hasil:
Pemain belum cukup
11. first(): mengambil elemen pertama
Berikutnya ada:
first()
Fungsinya:
Mengambil elemen pertama dari List.
Misalnya:
val players = mutableListOf("Budi", "Andi", "Citra")
Urutannya:
Index:
0 1 2
↓ ↓ ↓
Budi Andi Citra
Kemudian:
println(players.first())
Hasil:
Budi
Karena Budi adalah elemen pertama.
12. last(): mengambil elemen terakhir
Method:
last()
digunakan untuk mengambil elemen terakhir.
Misalnya:
val players = mutableListOf("Budi", "Andi", "Citra")
Kemudian:
println(players.last())
Hasil:
Citra
Karena Citra berada paling akhir.
13. Gambaran first() dan last()
Misalnya:
val players = mutableListOf(
"Budi",
"Andi",
"Citra",
"Doni"
)
Visualisasinya:
┌──────┬───────┬───────┬───────┐
│ Budi │ Andi │ Citra │ Doni │
└──────┴───────┴───────┴───────┘
↑ ↑
first() last()
Maka:
players.first()
→ "Budi"
dan:
players.last()
→ "Doni"
14. Bagaimana kalau List kosong?
Ini hal yang perlu kamu perhatikan.
Misalnya:
val players = emptyList<String>()
Kemudian:
players.first()
Tidak ada elemen pertama karena List kosong.
Begitu juga:
players.last()
tidak ada elemen terakhir.
Dalam situasi seperti ini, operasi tersebut dapat menghasilkan exception.
Jadi biasanya kita perlu memastikan List tidak kosong terlebih dahulu.
Misalnya:
if (players.isNotEmpty()) {
println(players.first())
}
atau:
if (!players.isEmpty()) {
println(players.last())
}
Konsepnya:
Apakah List kosong?
│
isEmpty()
│
┌────┴────┐
true false
│ │
jangan boleh
first/last ambil
15. isEmpty() vs isNotEmpty()
Kotlin juga memiliki:
isNotEmpty()
Artinya:
Apakah List memiliki setidaknya satu elemen?
Contoh:
val players = listOf("Budi", "Andi")
println(players.isNotEmpty())
Hasil:
true
Karena List memiliki data.
Secara logika:
isEmpty() → apakah kosong?
isNotEmpty() → apakah tidak kosong?
Keduanya saling berkaitan.
16. Hubungan size dan isEmpty()
Sebenarnya kita bisa menggunakan size untuk mengetahui apakah List kosong:
players.size == 0
Artinya:
Apakah jumlah elemennya 0?
Tetapi Kotlin menyediakan:
players.isEmpty()
yang jauh lebih jelas dibaca.
Bandingkan:
if (players.size == 0)
dengan:
if (players.isEmpty())
Yang kedua lebih mudah dibaca:
“Jika players kosong…”
Jadi gunakan property/method yang memang disediakan untuk tujuan tersebut.
17. Akses berdasarkan index
Nah, transcript di bagian akhir mulai mengarah ke topik berikutnya:
Indexing
Ini adalah salah satu cara paling penting untuk mengambil data dari Array maupun List.
Misalnya:
val players = listOf("Budi", "Andi", "Citra")
Kita tahu:
Index Value
0 Budi
1 Andi
2 Citra
Untuk mengambil Budi:
players[0]
Untuk mengambil Andi:
players[1]
Untuk mengambil Citra:
players[2]
Bentuk umumnya:
collection[index]
18. Indexing pada Array dan List hampir sama
Misalnya Array:
val numbers = arrayOf(10, 20, 30)
Kita bisa:
println(numbers[0])
hasil:
10
List:
val numbers = listOf(10, 20, 30)
juga:
println(numbers[0])
hasil:
10
Jadi cara mengakses berdasarkan index sangat mirip.
19. Jangan lupa index dimulai dari 0
Misalnya ada:
val players = listOf("Budi", "Andi", "Citra")
Jumlah elemen:
3
Tetapi index-nya:
0 → Budi
1 → Andi
2 → Citra
Bukan:
1 → Budi
2 → Andi
3 → Citra
Jadi:
jumlah elemen = 3
index terakhir = 2
Rumus sederhananya:
last index = size - 1
20. Bagaimana kalau index tidak ada?
Misalnya:
val players = listOf("Budi", "Andi", "Citra")
Index yang valid hanya:
0
1
2
Kalau kita melakukan:
println(players[3])
❌ Error, karena index 3 tidak ada.
Begitu juga:
players[-1]
❌ Tidak valid.
Jadi sebelum menggunakan index, pastikan index berada dalam range yang benar.
21. first() vs [0]
Keduanya bisa mengambil elemen pertama:
players.first()
dan:
players[0]
Misalnya:
val players = listOf("Budi", "Andi", "Citra")
Keduanya menghasilkan:
Budi
Tetapi cara berpikirnya sedikit berbeda.
players.first()
berarti:
“Ambil elemen pertama.”
Sedangkan:
players[0]
berarti:
“Ambil elemen pada index 0.”
Keduanya berguna.
22. last() vs index terakhir
Untuk mengambil elemen terakhir, kita bisa:
players.last()
atau secara konsep menggunakan:
players[players.size - 1]
Misalnya:
val players = listOf("Budi", "Andi", "Citra")
size adalah:
3
Index terakhir:
3 - 1 = 2
Jadi:
players[2]
menghasilkan:
Citra
Tetapi last() jauh lebih nyaman:
players.last()
23. Kenapa property dan method ini berguna?
Bayangkan kita membuat game.
Kita ingin mengecek:
Apakah ada pemain?
players.isNotEmpty()
Berapa pemain?
players.size
Siapa pemain pertama?
players.first()
Siapa pemain terakhir?
players.last()
Siapa pemain pada posisi tertentu?
players[2]
Dengan beberapa operasi sederhana tersebut, kita sudah bisa melakukan banyak hal terhadap collection.
24. Contoh program sederhana
Mari kita gabungkan semuanya:
fun main() {
val players = mutableListOf(
"Budi",
"Andi",
"Citra"
)
println(players.isEmpty())
println(players.size)
println(players.first())
println(players.last())
println(players[1])
}
Output:
false
3
Budi
Citra
Andi
Mari kita pahami satu per satu:
players.isEmpty()
→ apakah kosong?
false
players.size
→ jumlah elemen?
3
players.first()
→ elemen pertama?
Budi
players.last()
→ elemen terakhir?
Citra
players[1]
→ elemen index 1?
Andi
25. Contoh kasus game
Sekarang kita buat logika sederhana:
val players = mutableListOf("Budi", "Andi")
Game membutuhkan minimal 2 pemain.
if (players.size >= 2) {
println("Game dimulai!")
} else {
println("Menunggu pemain...")
}
Karena:
players.size = 2
maka:
Game dimulai!
Kemudian kita ingin mengetahui siapa pemain pertama:
println("Pemain pertama: ${players.first()}")
Output:
Pemain pertama: Budi
Dan pemain terakhir:
println("Pemain terakhir: ${players.last()}")
Output:
Pemain terakhir: Andi
26. Property vs Method — hafalkan pola ini
Untuk materi saat ini:
Property
players.size
Tidak menggunakan ().
Method
players.isEmpty()
players.first()
players.last()
Menggunakan ().
Kenapa?
Karena size adalah informasi/properti dari collection, sedangkan first() dan last() adalah operasi untuk mengambil elemen.
27. Ringkasan semua yang dipelajari
| Syntax | Fungsi | Contoh hasil |
|---|---|---|
list.isEmpty() | Cek apakah kosong | true / false |
list.isNotEmpty() | Cek apakah tidak kosong | true / false |
list.size | Jumlah elemen | 3 |
list.first() | Ambil elemen pertama | "Budi" |
list.last() | Ambil elemen terakhir | "Citra" |
list[0] | Ambil elemen berdasarkan index | "Budi" |
list[1] | Ambil elemen berdasarkan index | "Andi" |
Dan semua konsep tersebut juga sangat relevan untuk Array, bukan hanya List.
28. Gambaran besarnya
Coba simpan diagram ini:
List:
[Budi, Andi, Citra, Doni]
│ │ │ │
0 1 2 3
│
├── size → 4
│
├── isEmpty() → false
│
├── first() → Budi
│
├── last() → Doni
│
└── [2] → Citra
Jadi ketika melihat:
players.
pikirkan:
“Apa yang ingin saya ketahui atau lakukan terhadap List ini?”
Misalnya:
Apakah kosong? → isEmpty()
Ada isi? → isNotEmpty()
Berapa jumlahnya? → size
Pertama siapa? → first()
Terakhir siapa? → last()
Index tertentu? → [index]
🧠 Cara paling gampang mengingat
Bayangkan kamu punya antrean pemain:
[Budi, Andi, Citra, Doni]
Kemudian:
isEmpty() → "Kosong nggak?"
size → "Ada berapa?"
first() → "Siapa yang pertama?"
last() → "Siapa yang terakhir?"
[index] → "Siapa yang ada di posisi ini?"
Dan satu hal yang sangat penting untuk materi berikutnya:
Array/List menggunakan index yang dimulai dari
0.
Jadi:
0 → pertama
1 → kedua
2 → ketiga
3 → keempat
Video berikutnya kemungkinan besar akan masuk lebih dalam ke indexing dan iteration, yaitu bagaimana mengambil atau memproses semua elemen satu per satu, misalnya menggunakan for.