Hari 13: Generics & Collections Lanjutan
60 min
Last updated 09 Apr 2026
Generics
class Stack {
List _items = [];
void push(T item) => _items.add(item);
T pop() {
if (_items.isEmpty) throw StateError("Stack kosong!");
return _items.removeLast();
}
T get peek => _items.last;
bool get isEmpty => _items.isEmpty;
int get size => _items.length;
}
void main() {
Stack stackAngka = Stack();
stackAngka.push(10);
stackAngka.push(20);
stackAngka.push(30);
print("Peek: ${stackAngka.peek}"); // 30
print("Pop: ${stackAngka.pop()}"); // 30
print("Size: ${stackAngka.size}"); // 2
Stack stackKata = Stack();
stackKata.push("Hello");
stackKata.push("World");
print("Pop: ${stackKata.pop()}"); // World
}
Set — Koleksi Unik
void main() {
Set bahasa = {"Dart", "Python", "JavaScript"};
bahasa.add("Dart"); // duplikat diabaikan
bahasa.add("Go");
print(bahasa); // {Dart, Python, JavaScript, Go}
print(bahasa.contains("Go")); // true
Set a = {1, 2, 3, 4};
Set b = {3, 4, 5, 6};
print(a.intersection(b)); // {3, 4}
print(a.union(b)); // {1, 2, 3, 4, 5, 6}
print(a.difference(b)); // {1, 2}
}
Functional Collection Methods
void main() {
List
💡
Notice: .. (cascade) memungkinkan chaining method yang return void seperti sort().
Assignment
Hilangkan duplikat, urutkan, filter > 3, lalu kalikan 2.
Expected output:
Original: [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
Unik & sorted: [1, 2, 3, 4, 5, 6, 9]
Filter > 3: [4, 5, 6, 9]
Dikali 2: [8, 10, 12, 18]
Dart
main.dart
Solution
Output