Masukkan Password
11 Kursus Kotlin Lengkap #11 - Triple dalam Kotlin - Tutorial Kotlin untuk Pemula
Video ini masih melanjutkan materi sebelumnya tentang Pair, tetapi sekarang fokusnya adalah Triple. Kalau Pair menyimpan 2 nilai, maka Triple menyimpan 3 nilai.
Saya akan jelaskan dari dasar, lalu kita bedah kode satu per satu.
1. Mengingat kembali Pair
Sebelumnya kita belajar Pair.
Misalnya koordinat 2D:
val coordinates = Pair(2, 3)
Kita bisa menganggap:
first → X = 2
second → Y = 3
Jadi:
coordinates.first
menghasilkan:
2
dan:
coordinates.second
menghasilkan:
3
Sekarang bayangkan kita berpindah dari 2D ke 3D.
2. Apa itu koordinat 3D?
Kalau bidang 2D hanya memiliki:
X
Y
maka ruang 3D memiliki:
X
Y
Z
Misalnya sebuah titik:
(1, 2, 3)
artinya:
X = 1
Y = 2
Z = 3
Nah, karena ada 3 nilai, kita bisa menggunakan Triple.
val coordinates = Triple(1, 2, 3)
3. Apa itu Triple?
Triple adalah tipe Kotlin untuk menyimpan tiga nilai dalam satu objek.
Bentuk dasarnya:
Triple(first, second, third)
Jadi sebuah Triple memiliki:
| Posisi | Property |
|---|---|
| Nilai pertama | first |
| Nilai kedua | second |
| Nilai ketiga | third |
Misalnya:
val coordinates = Triple(1, 2, 3)
Maka:
coordinates.first → 1
coordinates.second → 2
coordinates.third → 3
4. Cara membuat Triple secara eksplisit
Video menyebut “academic way”, maksudnya cara yang lebih lengkap untuk belajar dasar.
Contohnya:
val coordinates3D: Triple<Int, Int, Int> = Triple(1, 2, 3)
Kelihatannya memang panjang. Mari kita pecah:
val
│
└── variable tidak bisa di-reassign
coordinates3D
│
└── nama variable
Triple<Int, Int, Int>
│
└── tipe data
Triple(1, 2, 3)
│
└── nilai yang disimpan
5. Apa arti Triple<Int, Int, Int>?
Ini berkaitan dengan generic type, yang nanti akan dipelajari lebih dalam.
Untuk sekarang cukup pahami:
Triple<Int, Int, Int>
berarti:
Triple ini mempunyai 3 nilai, dan ketiga nilai tersebut bertipe
Int.
Jadi:
Triple<Int, Int, Int>
│ │ │
│ │ └── third → Int
│ └─────── second → Int
└──────────── first → Int
6. Contoh lengkap
fun main() {
val coordinates3D: Triple<Int, Int, Int> = Triple(1, 2, 3)
println(coordinates3D)
}
Hasilnya kurang lebih:
(1, 2, 3)
Jadi satu variable:
coordinates3D
sekarang menyimpan tiga nilai.
7. Triple tidak harus berisi tiga Int
Ini penting.
Triple tidak hanya bisa digunakan untuk koordinat.
Misalnya:
val data = Triple("Andi", 20, true)
Tipe datanya:
Triple<String, Int, Boolean>
Artinya:
first → "Andi"
second → 20
third → true
Jadi ketiga nilai boleh memiliki tipe berbeda.
Contoh lain:
val data = Triple("Kotlin", 100, 3.14)
Secara konsep:
first → String
second → Int
third → Double
8. Type inference pada Triple
Seperti materi sebelumnya, Kotlin memiliki type inference.
Kita tidak harus menulis:
val coordinates3D: Triple<Int, Int, Int> = Triple(1, 2, 3)
Kita bisa menulis:
val coordinates3D = Triple(1, 2, 3)
Kotlin melihat:
1 → Int
2 → Int
3 → Int
kemudian menyimpulkan:
coordinates3D
↓
Triple<Int, Int, Int>
Jadi bentuk ini valid dan lebih ringkas.
9. Perbandingan dua cara
Cara eksplisit
val coordinates3D: Triple<Int, Int, Int> = Triple(1, 2, 3)
Menggunakan type inference
val coordinates3D = Triple(1, 2, 3)
Keduanya menghasilkan Triple yang sama.
Untuk belajar tipe data, bentuk eksplisit bagus karena kita bisa melihat tipe dengan jelas.
Untuk kode sehari-hari, type inference sering digunakan.
10. Cara mengambil data dari Triple
Ini bagian paling penting dari video.
Misalnya:
val coordinates3D = Triple(1, 2, 3)
Kita bisa mengambil nilai pertama:
coordinates3D.first
Nilai kedua:
coordinates3D.second
Nilai ketiga:
coordinates3D.third
Jadi:
println(coordinates3D.first)
println(coordinates3D.second)
println(coordinates3D.third)
Output:
1
2
3
11. Hubungkan first, second, third dengan X, Y, Z
Karena kita sedang menggunakan contoh koordinat:
val coordinates3D = Triple(1, 2, 3)
kita bisa menganggap:
first → X
second → Y
third → Z
Sehingga:
coordinates3D.first
adalah X:
1
coordinates3D.second
adalah Y:
2
coordinates3D.third
adalah Z:
3
Perlu diingat:
Kotlin sebenarnya tidak tahu bahwa
firstadalah X,secondadalah Y, danthirdadalah Z.
Itu adalah makna yang kita berikan sendiri pada data tersebut.
Bagi Kotlin:
first = nilai pertama
second = nilai kedua
third = nilai ketiga
12. Menyimpan masing-masing nilai ke variable
Video juga menunjukkan bahwa kita bisa mengambil nilai Triple dan memasukkannya ke variable baru.
Misalnya:
val coordinates3D = Triple(1, 2, 3)
val x = coordinates3D.first
val y = coordinates3D.second
val z = coordinates3D.third
Sekarang:
coordinates3D
│
├── first → 1 → x
├── second → 2 → y
└── third → 3 → z
Jadi kita mempunyai:
x = 1
y = 2
z = 3
13. Kenapa perlu membuat variable x, y, z?
Supaya kita bisa menggunakan datanya dengan lebih mudah.
Misalnya:
val coordinates3D = Triple(1, 2, 3)
val x = coordinates3D.first
val y = coordinates3D.second
val z = coordinates3D.third
println("X = $x")
println("Y = $y")
println("Z = $z")
Output:
X = 1
Y = 2
Z = 3
Di sini kita sekaligus menggunakan String Template yang baru saja kita pelajari:
"X = $x"
14. Tidak harus membuat variable baru
Kalau hanya ingin mencetak Z, kita tidak perlu membuat:
val z = coordinates3D.third
Kita bisa langsung:
println(coordinates3D.third)
Contoh:
val coordinates3D = Triple(1, 2, 3)
println(coordinates3D.third)
Output:
3
Jadi ada dua cara.
Langsung
println(coordinates3D.third)
Simpan dahulu
val z = coordinates3D.third
println(z)
Keduanya valid.
15. Contoh program lengkap
Mari kita buat versi yang lebih rapi:
fun main() {
val coordinates3D: Triple<Int, Int, Int> = Triple(1, 2, 3)
val x = coordinates3D.first
val y = coordinates3D.second
val z = coordinates3D.third
println("X = $x")
println("Y = $y")
println("Z = $z")
}
Hasil:
X = 1
Y = 2
Z = 3
Perhatikan berapa banyak konsep yang sudah kamu pelajari sebelumnya yang sekarang dipakai sekaligus:
val
↓
Triple
↓
Int
↓
property first/second/third
↓
String Template
↓
println()
16. Triple dengan String, Int, dan Boolean
Contoh lain yang lebih realistis:
val user = Triple("Andi", 20, true)
Misalnya kita menentukan bahwa:
first → nama
second → umur
third → status login
Kemudian:
val name = user.first
val age = user.second
val isLoggedIn = user.third
Sekarang:
name = "Andi"
age = 20
isLoggedIn = true
Kita bisa mencetak:
println("Name: $name")
println("Age: $age")
println("Logged in: $isLoggedIn")
Hasil:
Name: Andi
Age: 20
Logged in: true
Ini menunjukkan bahwa Triple tidak khusus untuk koordinat 3D.
17. Pair vs Triple
Sekarang bandingkan keduanya.
Pair
val point = Pair(10, 20)
Mempunyai:
first
second
Triple
val point = Triple(10, 20, 30)
Mempunyai:
first
second
third
Tabelnya:
| Pair | Triple | |
|---|---|---|
| Jumlah nilai | 2 | 3 |
| Nilai pertama | first | first |
| Nilai kedua | second | second |
| Nilai ketiga | ❌ | third |
| Contoh | (X, Y) | (X, Y, Z) |
Mental modelnya:
Pair
┌─────────┬─────────┐
│ first │ second │
│ X │ Y │
└─────────┴─────────┘
Sedangkan:
Triple
┌─────────┬─────────┬─────────┐
│ first │ second │ third │
│ X │ Y │ Z │
└─────────┴─────────┴─────────┘
18. Triple tidak punya operator to seperti Pair
Pada materi sebelumnya kita belajar:
val coordinates = 2 to 3
yang membuat Pair.
Untuk Triple, tidak ada syntax standar yang sependek:
2 to 3 to 4
yang bisa kamu anggap sebagai cara umum membuat Triple.
Untuk Triple, gunakan:
Triple(1, 2, 3)
Jadi jangan mencampurkan syntax Pair dengan Triple.
19. Kenapa Triple kadang kurang ideal?
Triple memang praktis, tetapi ada satu masalah.
Misalnya:
val person = Triple("Andi", 20, "Madiun")
Kita harus mengingat:
first = nama
second = umur
third = kota
Tidak terlalu jelas hanya dari kodenya.
Bandingkan dengan data class:
data class Person(
val name: String,
val age: Int,
val city: String
)
Kemudian:
val person = Person("Andi", 20, "Madiun")
Sekarang langsung terlihat:
person.name
person.age
person.city
Jauh lebih mudah dibaca.
Jadi secara umum:
PairdanTriplebagus untuk mengelompokkan data sederhana dalam jumlah kecil.
Kalau datanya mulai memiliki banyak field atau setiap field punya arti penting, data class biasanya lebih tepat.
20. Hal penting: Triple bukan “database mini”
Jangan berpikir:
“Kalau punya 3 data, berarti harus pakai Triple.”
Tidak begitu.
Kita memilih struktur data berdasarkan kebutuhan.
Misalnya:
Triple("Andi", 20, "Madiun")
bisa digunakan, tetapi jika ini benar-benar merepresentasikan seorang Person, data class biasanya lebih jelas.
Triple lebih cocok ketika kita hanya membutuhkan kelompok tiga nilai sederhana dan sementara.
21. Koreksi beberapa bagian subtitle
Ada beberapa istilah di subtitle yang perlu diluruskan.
❌ “Triple values”
Istilah yang lebih tepat adalah:
Tripleberisi tiga nilai.
Bukan berarti ada tipe bernama “triple values”.
❌ “Type interface”
Seperti video sebelumnya, istilah yang benar adalah:
Type inference
Contoh:
val coordinates = Triple(1, 2, 3)
Kotlin melakukan inference:
Triple<Int, Int, Int>
⚠️ “The first element, second element, third element”
Ini benar secara sederhana, tetapi property yang kita akses adalah:
first
second
third
Jadi jangan mencari:
coordinates.x
coordinates.y
coordinates.z
untuk Triple biasa.
Kotlin tidak otomatis menyediakan x, y, dan z.
Kalau kita ingin nama x, y, z, kita sendiri yang membuat variable:
val x = coordinates.first
val y = coordinates.second
val z = coordinates.third
22. Contoh latihan sederhana
Coba perhatikan kode berikut:
val data = Triple("Kotlin", 2011, true)
Tebak dulu:
data.first = ?
data.second = ?
data.third = ?
Jawabannya:
data.first → "Kotlin"
data.second → 2011
data.third → true
Dan tipe secara konsep:
Triple<String, Int, Boolean>
23. 🧠 Cara mengingat materi ini
Jangan terlalu fokus menghafal syntax panjang seperti:
Triple<Int, Int, Int>
Yang paling penting pahami konsepnya:
Pair
↓
2 nilai
Triple
↓
3 nilai
Kemudian:
Pair
first + second
dan:
Triple
first + second + third
Contoh:
val pair = Pair(10, 20)
println(pair.first)
println(pair.second)
Sedangkan:
val triple = Triple(10, 20, 30)
println(triple.first)
println(triple.second)
println(triple.third)
24. Hubungan dengan materi sebelumnya
Sekarang perjalanan kita sudah mulai terlihat:
Tipe data dasar
│
├── Int
├── Double
├── Float
├── Char
├── Boolean
└── String
│
▼
Mengelompokkan beberapa nilai
│
├── Pair → 2 nilai
│
└── Triple → 3 nilai
Contohnya:
val coordinates = Triple(10, 20, 30)
Kotlin memahami:
10 → Int
20 → Int
30 → Int
↓
Triple<Int, Int, Int>
Kemudian kita bisa mengambil:
first → 10
second → 20
third → 30
Kesimpulan
Materi video ini sebenarnya punya 4 hal utama yang perlu kamu kuasai:
1. Membuat Triple
val coordinates = Triple(1, 2, 3)
2. Triple dapat memiliki tipe berbeda
val data = Triple("Andi", 20, true)
Tipe:
Triple<String, Int, Boolean>
3. Mengambil data
data.first
data.second
data.third
4. Type inference
Tidak perlu selalu menulis:
val coordinates: Triple<Int, Int, Int> = Triple(1, 2, 3)
cukup:
val coordinates = Triple(1, 2, 3)
🔑 Inti yang harus benar-benar kamu ingat
Pair → 2 nilai → first, second
Triple → 3 nilai → first, second, third
Contoh paling sederhana:
val point2D = Pair(10, 20)
val point3D = Triple(10, 20, 30)
Dan kalau ingin mengambil datanya:
point2D.first
point2D.second
point3D.first
point3D.second
point3D.third
Satu catatan penting: Triple bukan berarti khusus untuk koordinat 3D. Koordinat 3D hanya contoh untuk mempermudah memahami konsep. Kamu bisa menyimpan tiga nilai apa pun selama tipe dan kebutuhan programnya sesuai.