One thing these collections have in common is subscript syntax. Subscripts are a way to quickly access elements in a collection, and they tend to work identically from language to language:
numbers[1] = 15;
The preceding line assigns the second value in the numbers list to 15. Lists in Dart use a zero offset to access the element. If the list is 10 elements long, then element 0 is the first element and element 9 is the last. If you were to try and access element 10, then your app would throw an out of bounds exception because element 10 does not exist.
Sometimes, it is safer to use the first and last accessors on the list instead of accessing the element directly:
final firstElement = numbers.first;
final lastElement = numbers.last;
Note that if your set is empty, first and last will throw an exception as well:
final List mySet = [];
print (mySet.first); //this will throw a Bad state: No element error
For maps, you can access the values with strings instead of integers:
ages['Tom'] = 48;
final myAge = ages['Brian']; //This will be null
However, unlike arrays, if you try to access a value with a key that is not on the map, then it will just gracefully fail and return null. It will not throw an exception.