Коллекции в Dart это массивы различных типов:
В каждой определённой ситуации может подойти тот или иной тип переменной. Тот же тип Set хранит в себе неупорядоченный список уникальных значений и это может быть полезным.
// Список var list = [1,2,3]; list.add ( 4 ); // добавить элемент print ( '$list, всего элементов ${list.length}' ); // [1, 2, 3, 4], всего элементов 4 list.remove ( 2 ); // удаляет элемент со значением (не по ключу, а именно по значению) print ( '$list, всего элементов ${list.length}' ); // [1, 3, 4], всего элементов 3 list.remove ( 3 ); print ( '$list, всего элементов ${list.length}' ); // [1, 4], всего элементов 2 // Неизменяемый список var listConst = const [1,2,3]; // Фиксированный список var listFixed = List(4); listFixed[0] = 0; listFixed[1] = 1; listFixed[2] = 2; //listFixed.add ( 5 ); // Так добавить не получится print ( listFixed ); // [0, 1, 2, null] // Нефиксированный список var listNoFixed = []; listNoFixed.add ( 2 ); // Можно добавить элемент print ( listNoFixed ); // [2] // spread operator var listSpread = [0,...listConst]; print ( listSpread ); // [0, 1, 2, 3] var listNull; print ( [-1,...listSpread] ); // [-1, 0, 1, 2, 3] print ( [-1,...?listNull] ); // [-1] // Список с if bool isAdmin = false; bool isGuest = false; var permissionList = [isGuest ? 'guest' : 'user' , if ( isAdmin ) 'admin' ]; print ( permissionList ); // [user] isAdmin = true; var permissionListNew = [isGuest ? 'guest' : 'user' , if ( isAdmin ) 'admin' ]; print ( permissionListNew ); // [user, admin] // Список с for List<int> intList = [1,2,3,4,5]; List<String> strList = [ '-' , for ( var i in intList ) 'Value $i' ]; print ( strList ); // [-, Value 1, Value 2, Value 3, Value 4, Value 5]
Основные свойства списков:
first: первый элемент
last: последний элемент
length: длина списка
reversed: список, в котором все элементы находятся в противоположном порядке
isEmpty: true, если список пуст
Основные методы списков:
add(E value): добавляет элемент в конец списка
addAll(Iterable<E> iterable): добавляет в конец списка другой список
clear(): удаляет все элементы из списка
indexOf(E element): возвращает первый индекс элемента
insert(int index, E element): вставляет элемент на определенную позицию
remove(Object value): удаляет объект из списка (удаляется только первое вхождение элемена в список)
removeAt(int index): удаляет элементы по индексу
removeLast(): удаляет последний элемент списка
forEach(void f(E element)): производит над элементами списка некоторое действие, которое задается функцией-параметром, аналоги цикла for..in
sort(): сортирует список
sublist(int start, [ int end ]): возвращает часть списка от индекса start до индекса end
contains(Object element): возвращает true, если элемент содержится в списке
join([String separator = "" ]): объединяет все элементы списка в строку. Можно указать необязательный параметр separator, который будет раздлять элементы в строке
skip(int count): возвращает коллекцию, в которой отсутствуют первые count элементов
take(int count): возвращает коллекцию, которая содержит первые count элементов
where(bool test(E element)): возвращает коллекцию, элементы которой соответствуют некоторому условию, которое передается в виде функции
Представляет из себя неупорядоченный набор уникальных элементов.
// Множество var langSet = { 'PHP' , 'SQL' , 'JavaScript' }; var softSet = { 'VS Code' , 'HeidiSQL' }; langSet.add ( 'HTML' ); langSet.addAll ( { 'CSS' , 'Dart' } ); print ( langSet ); // {PHP, SQL, JavaScript, HTML, CSS, Dart} var skillSet = <String>{}; skillSet.addAll ( softSet ); skillSet.addAll ( langSet ); print ( skillSet ); // {VS Code, HeidiSQL, PHP, SQL, JavaScript, HTML, CSS, Dart} // Неизменяемое множество final setConst = const { 'PHP' , 'SQL' , 'JavaScript' };
Основные свойства наборов:
first: возвращает первый элемент
last: возвращает последний элемент
length: возвращает длину набора
isEmpty: возвращает true, если набор пуст
Основные методы наборов:
add(E value): добавляет элемент в набор
addAll(Iterable<E> iterable): добавляет в набор другую коллекцию
clear(): удаляет все элементы из набора
difference(Set<Object> other): возвращает разность текущего набора и набора other в виде другого набора
intersection(Set<Object> other): возвращает пересечение текущего набора и набора other в виде другого набора
remove(Object value): удаляет объект из набора
removeAll(Iterable<Object> elements): удаляет из набора все элементы коллекции elements
union(Set<E&g; other): возвращает объединение двух наборов - текущего и набора other
contains(Object element): возвращает true, если элемент содержится в наборе
join([String separator = "" ]): объединяет все элементы набора в строку. Можно указать необязательный параметр separator, который будет раздлять элементы в строке
skip(int count): возвращает коллекцию, в которой отсутствуют первые count элементов
take(int count): возвращает коллекцию, которая содержит первые count элементов
where(bool test(E element)): возвращает коллекцию, элементы которой соответствуют некоторому условию, которое передается в виде функции
// Словари Map<String, String> mapString = { 'two': 'два', 'four': 'четыре', 'eight': 'восемь' }; print ( mapString ); // {two: два, four: четыре, eight: восемь} Map<int, String> mapInteger = { 2: 'two', 4: 'four', 8: 'eight', }; print ( mapInteger ); // {2: two, 4: four, 8: eight} var mapAdd = Map(); mapAdd['two'] = 'два'; mapAdd['four'] = 'четыре'; mapAdd['eight'] = 'восемь'; print ( mapAdd ); // {two: два, four: четыре, eight: восемь} // С множеством и словарями также возможны использовать if, for, spread и т.п.
Основные свойства:
entries: возвращает объект Iterable<MapEntry<K, V>>
, который представляет все элементы Map
keys: возвращает объект Iterable<K>
, который представляет все ключи Map
values: возвращает объект Iterable<V>
, который представляет все значения Map
length: возвращает количество элементов в Map
isEmpty: возвращает true, если Map пуст
Основные методы:
addAll(Map<K, V> other): добавляет в Map другой объект Map
addEntries(Iterable<MapEntry<K, V>> newEntries): добавляет в Map коллекцию Iterable<MapEntry<K, V>>
clear(): удаляет все элементы из Map
containsKey(Object key): возвращает true, если Map содержит ключ key
containsValue(Object value): возвращает true, если Map содержит значение value
remove(Object key): удаляет из Map элемент с ключом key