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); // 3Set 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']); // 30Berikut perbandingan singkat:
| Koleksi | Berurutan | Duplikat | Akses Berdasarkan |
|---|---|---|---|
| list | Ya | Diizinkan | Indeks |
| set | Tidak | Tidak diizinkan | Pengecekan keanggotaan |
| Map | Tidak* | Kunci unik | Kunci |
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.
Tantangan
MudahMari 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 classClassroomyang mengelola data siswa menggunakan ketiga jenis koleksi:List<String>bernamaattendanceOrderuntuk melacak siswa sesuai urutan kedatangan mereka (duplikat diperbolehkan jika seorang siswa melakukan presensi beberapa kali)Set<String>bernamauniqueStudentsuntuk melacak siswa yang hadir (tanpa duplikat)Map<String, int>bernamascoresuntuk menyimpan nilai tes setiap siswa
recordArrival(String name)- menambahkan nama ke list presensi dan set siswa uniksetScore(String name, int score)- menyimpan nilai siswa di mapprintReport()- 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()
- Buat sebuah instance
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
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
file Eksternallibrary dan ImporPengantar OOPClass dan ObjectKata kunci thismethodVariabel InstanceDasar-Dasar ConstructorRingkasan: Kalkulator Sederhana4Keamanan Null
Pengantar Keamanan NullBisa Null vs Tidak Bisa NullOperator ? dan !Kata Kunci late dan Keamanan NullOperator Penanganan NullKeamanan Null dalam classRangkuman: Sistem Profil Pengguna7class Abstrak & Antarmuka
class AbstrakMethod abstrakAntarmuka di DartAntarmuka ImplisitMengimplementasikan vs MemperluasBeberapa AntarmukaRingkasan: Kalkulator Bentuk10Koleksi dan Generik
Gambaran Umum list, set, dan MapKoleksi dengan Tipe AmanKelas GenerikMetode GenerikBatasan GenerikIterable dan IteratorUlasan: Penyimpanan Generik2Konstruktor dalam Dart
Konstruktor DefaultKonstruktor BernamaInitializer ListsKonstruktor KonstanKonstruktor FactoryKonstruktor RedirectingRangkuman, Pembuat Bentuk5Enkapsulasi
Member Publik vs PrivatKonvensi Prefiks _Privasi Tingkat libraryPendalaman Getter & SetterPenyembunyian InformasiRingkasan: Catatan Siswa8Mixin
Pengantar MixinMembuat MixinMenggunakan Beberapa MixinKata Kunci on pada MixinMixin vs. PewarisanMixin vs. InterfaceRangkuman: Sistem Hewan3Property Class
Anggota Instance vs StaticField Final dan ConstVariabel LateMethod dan Field StaticGetter dan SetterRangkuman: Pengelola Rekening Bank6Pewarisan
Pewarisan DasarKata Kunci superPenimpaan methodAnotasi @overrideKata Kunci class finalKonstruktor dan PewarisanRangkuman, Hierarki Karyawan9Polimorfisme
Dasar-Dasar PolimorfismePolimorfisme melalui AntarmukaPemeriksaan Tipe saat RuntimeOperator is & asKata Kunci KovarianRangkuman: Pemroses PembayaranLatihan sendiri: Compiler Dart online