# Dart Collections: A Comprehensive Guide Dart provides several built-in collection types to help you manage and manipulate groups of objects. This guide covers the main collection types and their operations. ## 1. Lists Lists are ordered, indexable collections of objects. ### Example: ```dart void main() { // Creating lists var numbers = [1, 2, 3, 4, 5]; List fruits = ['apple', 'banana', 'orange']; // Accessing elements print(numbers[0]); // 1 print(fruits.last); // orange // Adding elements numbers.add(6); fruits.addAll(['grape', 'mango']); // Removing elements numbers.remove(3); fruits.removeAt(0); // Other operations print(numbers.length); // 5 print(fruits.contains('banana')); // true // Iterating for (var fruit in fruits) { print(fruit); } // Functional operations var doubledNumbers = numbers.map((n) => n * 2).toList(); var evenNumbers = numbers.where((n) => n.isEven).toList(); } ``` ## 2. Sets Sets are unordered collections of unique items. ### Example: ```dart void main() { // Creating sets var uniqueNumbers = {1, 2, 3, 4, 5}; Set uniqueFruits = {'apple', 'banana', 'orange'}; // Adding elements uniqueNumbers.add(6); uniqueFruits.addAll(['grape', 'mango']); // Removing elements uniqueNumbers.remove(3); // Set operations var setA = {1, 2, 3, 4}; var setB = {3, 4, 5, 6}; print(setA.union(setB)); // {1, 2, 3, 4, 5, 6} print(setA.intersection(setB)); // {3, 4} print(setA.difference(setB)); // {1, 2} // Checking membership print(uniqueFruits.contains('banana')); // true // Iterating for (var number in uniqueNumbers) { print(number); } } ``` ## 3. Maps Maps are collections of key-value pairs. ### Example: ```dart void main() { // Creating maps var ages = {'Alice': 30, 'Bob': 25, 'Charlie': 35}; Map scores = {'Math': 90, 'Science': 85, 'History': 95}; // Accessing values print(ages['Alice']); // 30 print(scores['Math']); // 90 // Adding or updating entries ages['David'] = 28; scores.addAll({'Geography': 88, 'Literature': 92}); // Removing entries ages.remove('Bob'); // Checking keys and values print(ages.containsKey('Charlie')); // true print(scores.containsValue(100)); // false // Iterating ages.forEach((key, value) { print('$key is $value years old'); }); // Getting all keys or values print(scores.keys); print(scores.values); } ``` ## 4. Collection Methods and Operations Dart provides many useful methods for working with collections. ### Example: ```dart void main() { var numbers = [1, 2, 3, 4, 5]; // Functional methods var doubled = numbers.map((n) => n * 2); var evenNumbers = numbers.where((n) => n.isEven); var sum = numbers.reduce((a, b) => a + b); var product = numbers.fold(1, (a, b) => a * b); print(doubled); // (2, 4, 6, 8, 10) print(evenNumbers); // (2, 4) print(sum); // 15 print(product); // 120 // Sorting var fruits = ['banana', 'apple', 'orange']; fruits.sort(); print(fruits); // [apple, banana, orange] // Reversing var reversedNumbers = numbers.reversed; print(reversedNumbers); // (5, 4, 3, 2, 1) // Shuffling numbers.shuffle(); print(numbers); // Random order // Finding elements var firstEven = numbers.firstWhere((n) => n.isEven, orElse: () => -1); print(firstEven); } ``` ## Conclusion Dart's collection types provide powerful tools for managing groups of objects. Understanding how to effectively use Lists, Sets, and Maps, along with their associated methods and operations, is crucial for efficient Dart programming.