🎯 📗 Bagian 1 (Fundamental & Dasar) • Modul 05 100% Standar Industri & Vokasi

Koleksi Data (List, Set, & Map)

Modul pembelajaran Koleksi Data (List, Set, & Map).

⚡ Pemrograman DART

07. Koleksi Data (List, Set, & Map)

1. List (Array Terurut)

List adalah kumpulan data yang tersusun secara terurut dengan indeks berbasis 0.

void main() {
  // Inisialisasi List bertipe String
  List<String> perangkat = ['Router', 'Switch', 'Access Point'];
  
  perangkat.add('Firewall');          // Tambah 1 data
  perangkat.addAll(['Server', 'PC']); // Tambah banyak data
  perangkat.remove('Switch');         // Hapus elemen
  
  print("Jumlah: ${perangkat.length}"); // 5
  print("Elemen Pertama: ${perangkat.first}");
  print("Elemen Terakhir: ${perangkat.last}");
}

2. Set (Koleksi Unik Tanpa Duplikat)

Set digunakan saat kita ingin menjamin bahwa setiap item dalam koleksi hanya muncul tepat 1 kali:

void main() {
  Set<int> portUnik = {80, 443, 8080, 80, 443};
  print(portUnik); // {80, 443, 8080} -> Duplikat dieliminasi otomatis
  
  Set<int> portLain = {21, 22, 80};
  print("Union (Gabungan): ${portUnik.union(portLain)}");
  print("Intersection (Irisan): ${portUnik.intersection(portLain)}");
}

3. Map (Key-Value Pairs / Dictionary)

Map menyimpan data berpasangan antara Kunci (Key) dan Nilai (Value), format yang sangat umum saat memproses JSON API:

void main() {
  Map<String, dynamic> konfigurasiRouter = {
    'ip_address': '192.168.88.1',
    'ssid': 'SMK_TKJ_HOTSPOT',
    'channel': 6,
    'isActive': true
  };

  print("IP Router: ${konfigurasiRouter['ip_address']}");
  
  // Iterasi Map
  konfigurasiRouter.forEach((key, val) {
    print("Konfig [$key] -> $val");
  });
}

4. Fitur Modern: Spread Operator, Collection-If & Collection-For

void main() {
  bool isProduction = true;
  var devTools = ['Debugger', 'Profiler'];
  
  // Spread Operator (...) dan Collection-If
  var appModules = [
    'Auth Module',
    'Dashboard Module',
    if (!isProduction) ...devTools, // Disertakan hanya jika dev
    for (int i = 1; i <= 3; i++) 'Plugin #$i' // Collection-For
  ];

  print(appModules);
}