Menu
CoddyTech

Gambaran Umum list, set, dan Map

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 63 dari 110.

Dart menyediakan tiga tipe koleksi inti yang akan sering kamu gunakan saat membuat aplikasi. Masing-masing memiliki tujuan berbeda untuk mengatur dan mengakses data.

list adalah kumpulan berurutan yang elemennya diakses berdasarkan indeks. Item mempertahankan urutan penyisipannya dan duplikat diperbolehkan:

var fruits = ['apple', 'banana', 'apple'];
print(fruits[0]);      // apple
print(fruits.length);  // 3

Set adalah kumpulan elemen unik yang tidak berurutan. Jika kamu mencoba menambahkan duplikat, elemen itu akan diabaikan begitu saja:

var uniqueNumbers = {1, 2, 3, 2, 1};
print(uniqueNumbers);  // {1, 2, 3}

Map menyimpan pasangan kunci-nilai, sehingga kamu bisa mencari nilai berdasarkan kunci terkait:

var ages = {'Alice': 30, 'Bob': 25};
print(ages['Alice']);  // 30

Berikut perbandingan singkat:

KoleksiBerurutanDuplikatAkses Berdasarkan
listYaDiizinkanIndeks
setTidakTidak diizinkanPengecekan keanggotaan
MapTidak*Kunci unikKunci

Koleksi ini menjadi lebih berguna saat dipadukan dengan generics, yang akan kamu pelajari di pelajaran berikutnya untuk membuat koleksi yang aman dari segi tipe dan berfungsi dengan class buatanmu sendiri.

challenge icon

Tantangan

Mudah

Mari kita buat sistem pengelolaan kelas yang menggunakan ketiga jenis koleksi untuk mengatur data siswa dengan cara yang berbeda. Kamu akan melihat bagaimana List, Set, dan Map masing-masing memiliki tujuan berbeda saat mengelola informasi yang sama.

Kamu akan mengatur kodemu dalam dua file:

  • classroom.dart: Buat class Classroom yang mengelola data siswa menggunakan ketiga jenis koleksi:
    • List<String> bernama attendanceOrder untuk melacak siswa sesuai urutan kedatangan mereka (duplikat diperbolehkan jika seorang siswa melakukan presensi beberapa kali)
    • Set<String> bernama uniqueStudents untuk melacak siswa yang hadir (tanpa duplikat)
    • Map<String, int> bernama scores untuk menyimpan nilai tes setiap siswa
    Classroom-mu harus memiliki method berikut:
    • recordArrival(String name) - menambahkan nama ke list presensi dan set siswa unik
    • setScore(String name, int score) - menyimpan nilai siswa di map
    • printReport() - mencetak laporan kelas (format ditampilkan di bawah)
  • main.dart: Impor file classroom-mu dan tunjukkan cara kerja sistem:
    • Buat sebuah instance Classroom
    • Catat kedatangan dengan urutan ini: 'Alice', 'Bob', 'Alice', 'Carol', 'Bob'
    • Tetapkan nilai: Alice = 95, Bob = 87, Carol = 92
    • Panggil printReport()

Method printReport() harus menghasilkan:

Arrival Order: [Alice, Bob, Alice, Carol, Bob]
Unique Students: {Alice, Bob, Carol}
Scores: {Alice: 95, Bob: 87, Carol: 92}

Perhatikan bagaimana List mempertahankan setiap kedatangan (termasuk duplikat), Set otomatis hanya menyimpan nama unik, dan Map mengaitkan setiap siswa dengan nilainya. Setiap jenis koleksi memiliki tujuan yang tepat!

Output yang diharapkan:

Arrival Order: [Alice, Bob, Alice, Carol, Bob]
Unique Students: {Alice, Bob, Carol}
Scores: {Alice: 95, Bob: 87, Carol: 92}

Coba sendiri

import 'classroom.dart';

void main() {
  // TODO: Buat instance Classroom
  
  // TODO: Catat kedatangan dengan urutan ini: 'Alice', 'Bob', 'Alice', 'Carol', 'Bob'
  
  // TODO: Atur nilai: Alice = 95, Bob = 87, Carol = 92
  
  // TODO: Panggil printReport() untuk menampilkan data kelas
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Dart online