added resources, coding challenges, and more study guides

This commit is contained in:
Hugh Ratsch
2024-10-05 16:05:26 -05:00
parent d159c2ae51
commit a35b6e5ef4
17 changed files with 1875 additions and 1 deletions
+160
View File
@@ -0,0 +1,160 @@
# 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<String> 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<String> 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<String, int> 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.