Colecciones
List
Las listas son colecciones ordenadas de elementos. En Dart, las listas se representan con la palabra clave List.
final nums = [1, 2, 3];
List<int> nums = [1, 2, 3];final nums = [1, 2, 3];
List<int> nums = [1, 2, 3];Es importante saber que la lista empieza en el índice 0 no el 1.
void main() {
final names = ["foo", "bar", "baz"];
print(list[0]); // foo
print(list[1]); // bar
print(list[2]); // baz
}void main() {
final names = ["foo", "bar", "baz"];
print(list[0]); // foo
print(list[1]); // bar
print(list[2]); // baz
}Las listas son objetos, por lo que tienen propiedades y métodos.
void main() {
final names = ["foo", "bar", "baz"];
print(names.length); // 3
print(names.isEmpty); // false
print(names.isNotEmpty); // true
print(names.first); // foo
print(names.last); // baz
print(names.reversed); // (baz, bar, foo)
print(names.reversed.toList()); // [baz, bar, foo]
}void main() {
final names = ["foo", "bar", "baz"];
print(names.length); // 3
print(names.isEmpty); // false
print(names.isNotEmpty); // true
print(names.first); // foo
print(names.last); // baz
print(names.reversed); // (baz, bar, foo)
print(names.reversed.toList()); // [baz, bar, foo]
}Set
Los conjuntos son colecciones de elementos únicos, por lo que no pueden contener elementos duplicados no están ordenados. En Dart, los conjuntos se representan con la palabra clave Set.
var nums = {1, 2, 3};
const names = {'foo', 'bar', 'baz', 'foo'}; // error: foo is duplicated
Set<int> set = {1, 2, 3};var nums = {1, 2, 3};
const names = {'foo', 'bar', 'baz', 'foo'}; // error: foo is duplicated
Set<int> set = {1, 2, 3};Los conjuntos no tienen índices, por lo que no se puede acceder a un elemento por su índice.
void main() {
final names = {'foo', 'bar', 'baz'};
print(names[0]); // error: The operator '[]' isn't defined for the class 'Set<String>'
print(names.first); // foo
print(names.last); // baz
}void main() {
final names = {'foo', 'bar', 'baz'};
print(names[0]); // error: The operator '[]' isn't defined for the class 'Set<String>'
print(names.first); // foo
print(names.last); // baz
}Podemos añadir y eliminar elementos de un conjunto.
void main() {
var names = {'foo', 'bar', 'baz'};
names.add('qux');
names.add('foo'); // no effect
print(names); // {foo, bar, baz, qux}
names.remove('bar');
print(names); // {foo, baz, qux}
}void main() {
var names = {'foo', 'bar', 'baz'};
names.add('qux');
names.add('foo'); // no effect
print(names); // {foo, bar, baz, qux}
names.remove('bar');
print(names); // {foo, baz, qux}
}También podemos hacer operaciones de conjuntos como unión, intersección y diferencia.
void main() {
var a = {1, 2, 3};
var b = {3, 4, 5};
print(a.union(b)); // {1, 2, 3, 4, 5}
print(a.intersection(b)); // {3}
print(a.difference(b)); // {1, 2}
}void main() {
var a = {1, 2, 3};
var b = {3, 4, 5};
print(a.union(b)); // {1, 2, 3, 4, 5}
print(a.intersection(b)); // {3}
print(a.difference(b)); // {1, 2}
}Map
Los mapas son colecciones de pares clave-valor. En Dart, los mapas se representan con la palabra clave Map. Se puede reescibir un valor de una clave, pero no se puede duplicar una clave.
var map = {1: 'one', 2: 'two', 3: 'three'};
Map<int, String> map = {1: 'one', 2: 'two', 3: 'three'};
Map<String, Object> user = {'name': 'Bob', 'age': 42};
print(user['name']); // Bob
print(user['age']); // 42
user['name'] = 'Alice';
print(user['name']); // Alicevar map = {1: 'one', 2: 'two', 3: 'three'};
Map<int, String> map = {1: 'one', 2: 'two', 3: 'three'};
Map<String, Object> user = {'name': 'Bob', 'age': 42};
print(user['name']); // Bob
print(user['age']); // 42
user['name'] = 'Alice';
print(user['name']); // Alice